JDBC增删查改.docx
《JDBC增删查改.docx》由会员分享,可在线阅读,更多相关《JDBC增删查改.docx(14页珍藏版)》请在冰豆网上搜索。
![JDBC增删查改.docx](https://file1.bdocx.com/fileroot1/2022-11/25/8646cfa8-a2a9-4edb-9743-caf6cf6f15c4/8646cfa8-a2a9-4edb-9743-caf6cf6f15c41.gif)
JDBC增删查改
JAVAJDBC增删查改
JDBC,JavaDatabaseConnecive,Java数据库连接,是一组专门负责连接并操作数据库的标准,在整个JDBC中实际上大量的提供的是接口。
针对于各个不同的数据库生产商,只要想使用JAVA进行数据库的开发,则对这些标准有所支持。
JDBC在使用中常见的有以下三类:
JDBC-ODBC桥连接:
是SUN在JDK的开发包中提供的最标准的一套JDBC操作类库,使用的时候将JDBC-ODB-数据库,中间要经过一个ODBC的连接,那么就意味着整体的性能将会降低,所以在开发中是绝对不会去使用JDBC-ODBC的连接方式的。
JDBC连接,使用各个数据库提供商给定的数据库驱动程序,完成JDBC的开发,使用的时候需要在classpath中配置数据库的驱动程序
JDBC网络连接:
主要使用通过网络连接数据库
JDBC的操作步骤
在进行JDBC操作的时候可以按照以下的步骤完成:
1、加载数据库驱动程序,加载的时候需要将驱动程序配置到classpath之中
2、连接数据库,通过Connection接口和DriverManager类完成
3、操作数据库,通过Statement、PreparedStatement、ResultSet三个接口完成
4、关闭数据库,在实际开发中数据库资源非常有限,操作完之后必须关闭
数据库连接操作
在JDBC的操作中,如果要想进行数据库的连接,则必须按照以上的几步完成
1、通过Class.forName()加载数据库的驱动程序
2、通过DriverManager类进行数据库的连接,连接的时候要输入数据库的连接地址、用户名、密码
3、通过Connection接口接收连接
packageorg.connectiondemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassConnectionJDBC{
/**
*@paramargs
*/
//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR包中
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
Connectioncon=null;//表示数据库的连接对象
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
System.out.println(con);
con.close();//3、关闭数据库
}
}
数据库更新操作
如果要想执行数据库的更新操作,则可以使用Statement接口,数据库更新就是增加、修改、删除
增加、更新、删除操作
packageorg.updatedemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
publicclassUpdateDemo{
/**
*@paramargs
*/
//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR包中
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
Connectioncon=null;//表示数据库的连接对象
Statementstmt=null;
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
stmt=con.createStatement();//3、Statement接口需要通过Connection接口进行实例化操作
stmt.executeUpdate("insertintojava_study.personvalues(\'Tom\',20,\'SH\')");//执行SQL语句,插入、更新、删除数据
stmt.executeUpdate("updatejava_study.personsetname='Jery'whereage=20");
stmt.executeUpdate("deletefromjava_study.personwhereage=20");
con.close();//4、关闭数据库
}
}
数据库查询操作
通过SELECT语句,可以查询数据中的内容,在mysql中直接查询的时候可以发现将返回全部的查询结果给用户看,那么对于程序的操作中也是一样的,所有的查询结果要返回到程序处进行输出查看,那么程序通过ResultSet接口保存全部的查询结果,通过Statement接口中的executeQuery()方法查询。
查询之后的数据需要分别的取出。
通过next()方法找到返回的每一行数据,每一行中各个列的数据需要通过getXxx()方法取得,例如:
取得整型:
getInt()
取得字符串:
getString()
取得日期:
getDate()
取得小数:
getFloat()
packageorg.querydemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
publicclassQueryDemo{
/**
*@paramargs
*/
//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR包中
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
Connectioncon=null;//表示数据库的连接对象
Statementstmt=null;//表示数据库的更新操作
ResultSetresult=null;//表示接收数据库的查询结果
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
stmt=con.createStatement();//3、Statement接口需要通过Connection接口进行实例化操作
result=stmt.executeQuery("selectname,age,addressfromjava_study.person");//执行SQL语句,查询数据库
while(result.next()){
Stringname=result.getString("name");
intage=result.getInt("age");
Stringaddress=result.getString("address");
System.out.println(name+age+address);
}
result.close();
con.close();//4、关闭数据库
}
}
PreparedStatement
此接口是在实际的开发中使用最广泛的一个操作接口,此接口是Statement接口的子接口,采用预处理的方式完成
完成增加操作
packageorg.preparedstatementdemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.util.Date;
publicclassPreparedStatementDemo{
/**
*@paramargs
*/
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub
Connectioncon=null;//表示数据库的连接对象
PreparedStatementpstmt=null;//表示数据库更新操作
Stringname="Tom";
intage=20;
Datedate=newDate();
Stringsql="insertintojava_study.personvalues(?
?
?
)";
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
System.out.println(sql);
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
pstmt=con.prepareStatement(sql);//使用预处理的方式创建对象
pstmt.setString(1,name);//第一个?
号的内容
pstmt.setInt(2,age);//第二个?
号的内容
pstmt.setDate(3,newjava.sql.Date(date.getTime()));
pstmt.executeUpdate();//执行SQL语句,更新数据库
pstmt.close();
con.close();//4、关闭数据库
}
}
完成模糊操作
模糊查询要使用LIKE语句,那么LIKE语句需要使用%进行匹配
packageorg.preparedstatementquery;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.Date;
publicclassPreparedStatementQuery{
/**
*@paramargs
*/
//TODOAuto-generatedmethodstub
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
Connectioncon=null;//表示数据库的连接对象
PreparedStatementpstmt=null;//表示数据库更新操作
ResultSetresult=null;
Stringlike_name="Tom1";
intlike_age=12;
Stringsql="selectname,age,birthdayfromjava_study.personwherenamelike?
orage=?
";
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
System.out.println(sql);
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
pstmt=con.prepareStatement(sql);//使用预处理的方式创建对象
pstmt.setString(1,"%"+like_name+"%");
pstmt.setInt(2,like_age);
result=pstmt.executeQuery();//执行SQL语句,更新数据库
while(result.next()){
Stringname=result.getString("name");
intage=result.getInt("age");
Datedate=result.getDate("birthday");
System.out.println(name+","+age+","+date);
}
result.close();pstmt.close();con.close();//4、关闭数据库}}
批处理
批处理,多条SQL语句可以一次性执行完毕,称为批处理操作
packageorg.addbetchdemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.util.Date;
publicclassAddDetchDemo{
/**
*@paramargs
*/
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub
Connectioncon=null;//表示数据库的连接对象
PreparedStatementpstmt=null;//表示数据库更新操作
Stringsql="insertintojava_study.personvalues(?
?
?
)";
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
System.out.println(sql);
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
pstmt=con.prepareStatement(sql);//使用预处理的方式创建对象
for(inti=0;i<10;i++){
pstmt.setString(1,"org"+i);//第一个?
号的内容
pstmt.setInt(2,i);//第二个?
号的内容
pstmt.setDate(3,newjava.sql.Date(newjava.util.Date().getTime()));
pstmt.addBatch();
}
int[]i=pstmt.executeBatch();//执行SQL语句,更新数据库
System.out.println(i);
pstmt.close();
con.close();//4、关闭数据库
}
}
事务处理
通过设置connection的autocommit(false)提交事务mit();回滚事务con.rollback()
packageorg.transactiondemo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
publicclassTransactionDemo{
/**
*@paramargs
*/
//驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR包中
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";
//连接地址是由各个数据库生产商单独提供的,所以需要单独记住
publicstaticfinalStringDBURL="jdbc:
mysql:
//localhost:
3306/test";
//连接数据库的用户名
publicstaticfinalStringDBUSER="root";
//连接数据库的密码
publicstaticfinalStringDBPASS="";
publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub
Connectioncon=null;//表示数据库的连接对象
Statementstmt=null;
Class.forName(DBDRIVER);//1、使用CLASS类加载驱动程序
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);//2、连接数据库
con.setAutoCommit(false);
stmt=con.createStatement();//3、Statement接口需要通过Conn