小学期 Jdbc-课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第十二章JdbcJdbc:JavaDatabaseConnectivity数据库:用来存放数据,一个个表姓名学号数学javaZhang0019090Wang0029191Sql语句:structuredquerylanguage,结构化查询语句,程序可以通过SQL语句从数据库读取数据,保存数据到数据库。2通过jdbc访问数据库jdbc是java程序和数据库之间的桥梁java程序数据库:java程序通过jdbc把sql语句交给数据库执行数据库java程序:数据库执行的结果由jdbc返回给程序3运行数据库服务器使用数据库保存数据,需要运行数据库服务器。数据库服务器是一种系统程序。对功能和性能有严格的要求。常用的数据库服务器有Oracle、SQLServer、DB2、MySQL等。Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。目前最新版本是2.3.2。网站:运行数据库服务器使用hsqldb小型数据库,需要hsqldb.jar在hsqldb.jar所在的目录运行如下命令:java-cp.;hsqldb.jarorg.hsqldb.Server5数据库服务器启动界面6运行数据库管理程序java-cp.;hsqldb.jarorg.hsqldb.util.DatabaseManagerSwing7运行数据库管理程序界面8运行数据库管理程序9Sql---类型java类型和sql类型关系intintlongbigintStringvarchar(120或更长)doublereal或decimal10Sql语句---createcreatetable表的名字(列名1sql类型,列名2sql类型,……最后一列名sql类型(sql类型后不要逗号))createtablestudent(idbigint,namevarchar(200))11Sql语句---insertinsertinto表名(列1,列2,列3…)values(第1列的值,第2列的值,第三列的值,…)字符串用单引号insertintostudent(id,name)values(1,'wangwu')12Sql语句---select(查询)显示表中所有列的值select*from表名select*fromstudent显示表中部分列的值select列名1,列名2from表名selectnamefromstudent13Sql语句---按条件查询只显示满足条件的行select*fromstudentwhereid=2select*fromstudentwherename='lisi'select*fromstudentwhereid10select*fromstudentwhereid=1orid=214Sql语句---delete删除一个表中的所有列deletefrom表名deletefromstudent按条件删除部分行deletefrom表名where条件deletefromstudentwhereid=215Sql语句---update修改全部行的几列update表名set列1=新值1,列2=新值2updatestudentsetmath=100按条件修改部分行update表名set列1=新值1,列2=新值2where条件updatestudentsetmath=100whereid=216访问数据库步骤1驱动程序:每个数据库的jdbc驱动程序不同,hsqldb的jdbc驱动程序在hsqldb.jar中,和java程序放同一目录下2指定连接需要的参数连接哪台计算机上的哪个数据库?常用url表示。要修改,连接的计算机不同Stringurl=jdbc:hsqldb:hsql://localhost;//连接到本机使用哪个类连接?常用driver表示Stringdriver=org.hsqldb.jdbcDriver;//类名17访问数据库步骤访问数据库的用户名常用user表示Stringuser=sa;//hsqldb默认密码常用pass表示Stringpass=;//hsqldb默认3得到连接Class.forName(driver);Connectioncon=DriverManager.getConnection(url,user,pass);18Statement得到连接后,创建Statement用执行sql语句Statementstmt=con.createStatement();19Statement---executeUpdate执行非select语句,create,insert,delete,updateStringsql=createtablestudent(idbigint,namevarchar(120),osdecimal,mathdecimal,javadecimal);Statementstmt=con.createStatement();stmt.executeUpdate(sql);20Statement---executeUpdatepublicvoidinsert(Studentstu){Stringsql=“insertintostudent(id,name)values;StringvalStr=“(”+stu,getId()+”,’”+stu.getName()+”’)”;sql+=valStr;Statementstmt=con.createStatement();stmt.executeUpdate(sql);}21Statement---executeQuery执行select语句Stringsql=select*fromstudent;ResultSetrs=stmt.executeQuery(sql);//执行命令,返回执行结果ResultSet中的内容类似下表:idnameosjavamath1Zhang9090902Wang9191913li92929222Statement---executeQuerywhile(rs.next()){longid=rs.getLong(id);Stringname=rs.getString(name);doublemath=rs.getDouble(math);doubleos=rs.getDouble(os);doublejava=rs.getDouble(java);}rs.close();stmt.close();23编译、运行启动hsqldb服务器编译javac-cp.;hsqldb.jarJdbcDemo2.java运行java-cp.;hsqldb.jarJdbcDemo224Jdbc一个完整的例子JdbcDemo225PreparedStatement---execute使用带参数的SQL语句,使用PreparedStatement。执行非select语句用executeStringsql=updatestudentsetmath=100whereid=?;PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setLong(1,3L);//参数?的索引,从1开始pstmt.execute();pstmt.close();26PreparedStatement---executepublicvoidinsert(Studentstu){Stringsql=“insertintostudent(id,name,math)values(?,?,?);PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setLong(1,stu.getId());pstmt.setString(2,stu.getName());pstmt.setDouble(3,stu.getMath())pstmt.execute();pstmt.close();}27PreparedStatement---execute执行insert语句Stringsql=insertintostudent(id,name,os,math,java)values(?,?,?,?,?);PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setLong(1,3L);pstmt.setString(2,wangjia);pstmt.setDouble(3,99.0);pstmt.setDouble(4,89.0);pstmt.setDouble(5,79.0);pstmt.execute();pstmt.close();28PreparedStatement---executeQuery执行select语句Stringsql=select*fromstudentwheremath?;PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setDouble(1,90.0);ResultSetrs=pstmt.executeQuery();29Statement和PreparedStatement选用标准pstm一旦绑定了SQL,此pstm就不能执行其他的Sql,即只能执行一条SQL命令。stm可以执行多条SQL命令。对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。当需要外部变量的时候,pstm的执行效率更高.30Statement和PreparedStatement使用区别创建时的区别:Statementstm=con.createStatement();PreparedStatementpstm=con.prepareStatement(sql);执行的时候:stm.execute(sql);pstm.execute();

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功