Java网络及数据开发.docx
《Java网络及数据开发.docx》由会员分享,可在线阅读,更多相关《Java网络及数据开发.docx(16页珍藏版)》请在冰豆网上搜索。
![Java网络及数据开发.docx](https://file1.bdocx.com/fileroot1/2023-1/3/797ba1c2-e5b9-4f12-9bf0-161b4314f5ee/797ba1c2-e5b9-4f12-9bf0-161b4314f5ee1.gif)
Java网络及数据开发
第一章
线程与线程的实现
一、线程概念和原理
软件:
文档与数据的集合(产品)项目
程序:
一序列的制定集合
进程:
是一个程序在其空间范围的一些资源调度和分配;
线程:
没有独立的运行空间和其它线程共享
二、线程调度
1、Thread(类)Runnable(接口)
2、线程入口方法:
Run();
3、进程入口方法:
main();
例子:
publicclassxianchengextendsThread{
Strings;
publicxiancheng(Strings){
this.s=s;
}
publicvoidrun(){
while(true){
System.out.println(Thread.currentThread().getName());
}
}
}
publicclassxiantest{
publicstaticvoidmain(String[]args){
xianchengxc=newxiancheng("wo");
xc.start();
while(true){
System.out.println("main:
"+Thread.currentThread().getName());
}
}
}
三、线程调度的实现
第一种:
继承Thread类
第二种:
实现Runnable接口
1、Thread类是线程类,它本身实现了Runnable接口,该类封装了线程的方法。
2、实现Runnable接口也可以实现线程的构造,此接口只有一个方法即run()方法,run()方法必须由实现了Runnable接口的类实现。
四、线程的常用方法
1、Start()启动一个线程;
2、run()定义该线程的动作;
例子:
publicclasscaiimplementsRunnable{
Strings;
publiccai(Strings){
this.s=s;
}
publicvoidrun(){
for(inti=0;i<10;i++){
System.out.println(s+i);
}
}
}
publicclasscaitest{
publicstaticvoidmain(String[]args){
Threadtj=newThread(newcai("tanji"));
Threadwby=newThread(newcai("wangbingyu"));
tj.start();
wby.start();
}
}
五、多线程求和
例子:
publicclassThreadsumextendsThread{
intfrom;
intto;
longsum;
publicThreadsum(intf,intt){
this.from=f;
this.to=t;
}
longgetsum(){
returnsum;
}
publicvoidrun(){
for(inti=from;i<=to;i++){
sum=sum+i;
}
}
}
publicclasstest{
publicstaticvoidmain(String[]args){
Threadsumts=newThreadsum(1,100);
ts.start();
longs=ts.getsum();
try{
ts.join();//等待ts线程执行完成
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println(ts.isAlive());//ts线程还活着
System.out.println(s);
}
}
例子2:
publicclassxxextendsThread{
publicvoidrun(){
for(inti=0;i<=100;i++){
System.out.println(i);
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
Thread.currentThread().getName();
}
}
}
publicclassxxtest{
publicstaticvoidmain(String[]args){
xxj=newxx();
j.start();
try{
j.join();
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
六、优先级通过setpriority方法
数值(max_priority和min_priority(是10和1),norm_priority(5))
七、串口多线程(同步(synchronized:
确定某个时刻只有一个线程允许执行特定代码))
例子:
publicclassyyextendsThread{
staticObjectos=newObject();
Stringch;
publicyy(Stringch){
this.ch=ch;
}
voidprintchar(){
for(inti=1;i<=100;i++){
System.out.println(ch);
}
}
publicvoidrun(){
synchronized(os){
for(inti=1;i<=10;i++){
printchar();
}
}
}
}
publicclassyytest{
publicstaticvoidmain(String[]args){
yypa=newyy("a");
yypb=newyy("b");
pa.start();
pb.start();
}
}
第三章
JDBC数据库访问技术
一、JDBC的概念
1、JDBC是一种可用与执行sql语句的Javaapl
二、JDBC的任务
1Jdbc能完成下列三件事:
和某个数据建立连接
向数据库发送不sql语句
处理数据库返回的结果
2、statement接口
例子写入:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclasstest{
publicstaticvoidmain(String[]args){
Stringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Stringurl="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;databasename=us";
Stringuser="sa";
Stringpass="1992119";
Connectioncn=null;
Statementcmd=null;
Stringsql="insertintotevalues('sazi',19,'tongnan')";
try{
//加载驱动
Class.forName(driver);
//获取链接
cn=DriverManager.getConnection(url,user,pass);
//准备命令
cmd=cn.createStatement();
//执行命令
cmd.executeUpdate(sql);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
cmd.close();
cn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
数据库的代码:
createdatabaseus
createtablete
(
snamevarchar(12),
sageint,
saddrvarchar(20)
)
select*fromte//查询数据是否写入成功
例子修改:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclasstest{
publicstaticvoidmain(String[]args){
Stringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Stringurl="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;databasename=us";
Stringuser="sa";
Stringpass="1992119";
Connectioncn=null;
Statementcmd=null;
Stringsql="updatetesetsage=100wheresage=19";
try{
//加载驱动
Class.forName(driver);
//获取链接
cn=DriverManager.getConnection(url,user,pass);
//准备命令
cmd=cn.createStatement();
//执行命令
cmd.executeUpdate(sql);
System.out.println("修改成功");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
cmd.close();
cn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
数据库的代码与上面的相同;
例子删除:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclasstest{
publicstaticvoidmain(String[]args){
Stringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Stringurl="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;databasename=us";
Stringuser="sa";
Stringpass="1992119";
Connectioncn=null;
Statementcmd=null;
Stringsql="deletefromtewheresage=100";
try{
//加载驱动
Class.forName(driver);
//获取链接
cn=DriverManager.getConnection(url,user,pass);
//准备命令
cmd=cn.createStatement();
//执行命令
cmd.executeUpdate(sql);
System.out.println("删除成功");
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
cmd.close();
cn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
数据库不变
例子查询:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclasstest{
publicstaticvoidmain(String[]args){
Stringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Stringurl="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;databasename=us";
Stringuser="sa";
Stringpass="1992119";
Connectioncn=null;
Statementcmd=null;
ResultSetrs=null;
Stringsql="select*fromte";
try{
//加载驱动
Class.forName(driver);
//获取链接
cn=DriverManager.getConnection(url,user,pass);
//准备命令
cmd=cn.createStatement();
//执行命令
rs=cmd.executeQuery(sql);
//处理
while(rs.next()){
System.out.println("姓名:
"+rs.getString
(1));
System.out.println("年龄:
"+rs.getInt
(2));
System.out.println("地址:
"+rs.getString(3));
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
cmd.close();
cn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
封装了的例子:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
/*
*操作数据库。
*连接
*executsql;
*/
publicclassSqlHelp{
staticStringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
staticStringurl="jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;databasename=stu";
staticStringuser="sa";
staticStringpass="";
staticStatementcmd=null;
/**
*得到一个连接
*@return返回连接好数据库的连接对象
*/
publicstaticConnectiongetConn()
{Connectioncn=null;
try{
Class.forName(driver);
cn=DriverManager.getConnection(url,user,pass);
}catch(Exceptione){
e.printStackTrace();
}
returncn;
}
/**
*@param要执行的sql语句insertupdatedelete
*@return影响的行数
*/
publicstaticintexeNoquery(Stringsql)
{
inti=0;
try{
cmd=getConn().createStatement();
i=cmd.executeUpdate(sql);
}catch(SQLExceptione){
e.printStackTrace();
}finally
{
try{
cmd.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
returni;
}
}
输入的封装:
importjava.util.Scanner;
/*
*输入帮助类
*/
publicclassInpuHelp{
staticScannerinput=newScanner(System.in);
/**
*获得输入int
*@return输入的值int
*/
publicstaticintgetint()
{
inti=input.nextInt();
returni;
}
/**
*获得字符串输入
*@return输入的字符串
*/
publicstaticStringgetstrin()
{
Strings=input.next();
returns;
}
}
测试类:
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
importcom.qhit.bank.dal.InpuHelp;
importcom.qhit.bank.dal.SqlHelp;
publicclassTestPrapaer{
/*
*@DemoprepareStatement命令存数据
*/
publicstaticvoidmain(String[]args){
System.out.println("请输入学号:
");
inta=InpuHelp.getint();//调用输入帮助类
System.out.println("请输入姓名:
");
Stringxm=InpuHelp.getstrin();//调用输入帮助类
System.out.println("请输入age:
");
intage=InpuHelp.getint();//调用输入帮助类
Stringsql="insertintoxs(snum,sname,sage)values(?
?
?
)";
PreparedStatementpcmd=null;
//通过sqlhelp类来得到连接
Connectioncn=SqlHelp.getConn();
try{
//准备参数化命令
pcmd=cn.prepareStatement(sql);
//为命令设置参数
pcmd.setInt(1,a);
pcmd.setString(2,xm);
pcmd.setInt(3,age);
//执行命令
pcmd.execute();//这个方法很重要执行增删改的sql语句
System.out.println("inertintook...");
}catch(SQLExceptione){
e.printStackTrace();
}finally
{
//关闭资源
try{
pcmd.close();
cn.close();
}catch(SQLExceptione){
e.printStackTrace