




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Java教程数据库》PPT课件本课件仅供大家学习学习学习完毕请自觉删除谢谢本课件仅供大家学习学习学习完毕请自觉删除谢谢《Java教程数据库》PPT课件本课件仅供大家学习学Java入门Java入门24Java数据库技术4.1MySQL和JDBC4.2
使用JDBC4.3
实例4Java数据库技术4.1MySQL和JDB34.1MySQL和JDBC概述MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于
Oracle
旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一,对于一般的个人使用者和中小型企业来说,MySQL提供的功能绰绰有余。4.1MySQL和JDBC概述MySQL是一个关系型数据4创建数据库test:createdatabasetest创建表hero:CREATETABLEhero(idint(11)AUTO_INCREMENT,namevarchar(30),hpfloat,damageint(11),PRIMARYKEY(id))DEFAULTCHARSET=utf8;插入一条记录盖伦到表中:insertintoherovalues(null,'盖伦',616,100)查询所有数据:select*fromhero统计表中有多少条数据:selectcount(*)fromhero显示前5条数据:select*fromherolimit0,5修改:updateherosethp=818whereid=1删除:deletefromherowhereid=1操作语句创建数据库test:createdatabasetes54.1MySQL和JDBCJDBC(JavaDatabaseConnection,Java数据库连接)是一种用于执行SQL语句的JavaAPI(应用程序设计接口),它由一些Java语言写的类和界面组成。JDBC提供了一种标准的应用程序设计接口,使得开发人员使用Java语言开发完整的数据库应用程序变得极为简单。通过JDBC,开发人员几乎可以将SQL语句传递给任何一种数据库,而无需为各种数据库编写单独的访问程序。JDBC可以自动将SQL语句传递给相应的数据库管理系统。4.1MySQL和JDBCJDBC(Ja6访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。
为了代码能够使用第三方的类,需要为项目导入mysql的专用Jar包。
通常都会把项目用到的jar包统一放在项目的lib目录下导包步骤:右键project->property->javabuildpath->libaries->addexternaljars访问MySQL数据库需要用到第三方的类,这些第三方的类,都被7packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){ //初始化驱动
try{//驱动类//就在中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
数据库驱动加载成功!");
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}初始化驱动通过Class.forName初始化驱动类
就在中packagejdbc;初始化驱动8JDBC扩展了Java的功能,例如在Applet中应用JDBC,可以实现与远程数据库的连接,实现不同平台数据库之间的对话。简单地说,JDBC完成下面三个操作:(1)与一个数据库建立连接。Connectioncon=DriverManager.getConnection("jdbc:odbc:CallCenter","sa","");(2)向数据库发送SQL语句。stmt=con.createStatement();rs=stmt.executeQuery("SELECTCID,CPinfromtCustomerWHERECID='z1'");JDBC扩展了Java的功能,例如在Appl9(3)处理数据库返回的结果。while(rs.next()){ StringtheInt=rs.getString("CID"); Stringstr=rs.getString("CPin"); ...}(3)处理数据库返回的结果。104.2使用JDBCJDBC的接口分为两个层次:一个是面向程序开发人员的JDBCAPI;另外一个是底层的JDBCDriverAPI。JDBCAPI被描述成为一组抽象的Java接口,应用程序可以对某个数据库打开连接,执行SQL语句并且处理结果。最重要的接口如下::处理驱动的调入并且对产生新的数据库连接提供支持。:代表对特定数据库的连接。:代表一个特定的容器,以对一个特定的数据库执行SQL语句。:控制对一个特定语句的行数据的存取。4.2使用JDBCJDBC的接口分为两11
其中又有两个子类型::用于执行预编译的SQL语句。:用于执行对一个数据库内嵌过程的调用。JDBCDriverAPI是指接口,封装了不同数据库的驱动程序(像Access、Foxpro、SQLServer等)。由于它是数据库底层处理,所以必须提供对、java.sql.Statement、和的实现。其中又有两个子类型:12packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){ try{
//建立与数据库的Connection连接
//这里需要提供:
//数据库所处于的本机)//数据库的端口号:3306(mysql专用端口号)
//数据库名称how2java//编码方式UTF-8//账号root//密码admin
连接数据库packagejdbc;连接数据库13//接上面的代码Connectionc=DriverManager.getConnection("root","admin");
连接成功,获取连接对象:"+c);
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}//接上面的代码14packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{
Statement是用于执行SQL语句的,比如增加,删除packagejdbc;Statement是用于执行S15Connectionc=DriverManager.getConnection("root","admin");
//注意:使用的是//不要不小心使用到:Statements=c.createStatement();
获取Statement对象:"+s);
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}《Java教程数据库》课件16packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{
Connectionc=DriverManager.getConnection("root","admin");
s.execute执行sql语句
执行成功后,用mysql-front进行查看,明确插入成功packagejdbc;s.execute执行sql语17Statements=c.createStatement();
//准备sql语句
//注意:字符串要用单引号'Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";s.execute(sql);
执行插入语句成功");
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}执行SQL语句之前要确保数据库test中有表hero的存在,如果没有,需要事先创建表执行SQL语句之前要确保数据库test中有表hero的存在,18在回收垃圾语句后面加上下面语句finally{//数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯
//先关闭Statementif(s!=null)try{s.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//后关闭Connectionif(c!=null)try{c.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}数据库的连接是有限资源,相关操作结束后,养成关闭数据库的好习惯
先关闭Statement
后关闭Connection在回收垃圾语句后面加上下面语句数据库的连接是有限资源,相关操19packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
使用try-with-resource的方式自动关闭连接packagejdbc;使用try-with-resour20try("root","admin");Statements=c.createStatement();){Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";s.execute(sql);
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}《Java教程数据库》课件21Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";Stringsql="deletefromherowhereid=5";Stringsql="updateherosetname='name5'whereid=3";增、删、改语句Stringsql="insertintohero22packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
"root","admin");Statements=c.createStatement();){
executeQuery执行SQL查询语句packagejdbc;executeQuery执行SQ23Stringsql="select*fromhero";
//执行查询语句,并把结果集返回给ResultSetResultSetrs=s.executeQuery(sql);while(rs.next()){intid=rs.getInt("id");//可以使用字段名
Stringname=rs.getString(2);//也可以使用字段的顺序
floathp=rs.getFloat("hp");intdamage=rs.getInt(4);}//不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet//rs.close();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}在取第二列的数据的时候,用的是rs.get(2),而不是get(1).这个是整个Java自带的api里唯二的地方在取第二列的数据的时候,用的是rs.get(2),而不是g24packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句创建PreparedStatement除此之外,还能能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接packagejdbc;PreparedStatement25
Stringsql="insertintoherovalues(null,?,?,?)";//根据sql语句创建PreparedStatementPreparedStatementps=c.prepareStatement(sql);){
//设置参数
ps.setString(1,"提莫");ps.setFloat(2,313.0f);ps.setInt(3,50);//执行
ps.execute();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}使用参数设置,可读性好,不易犯错有预编译机制,性能比Statement更快防止SQL注入式攻击使用参数设置,可读性好,不易犯错26packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}Statements=c.createStatement();){//有事务的前提下
//在事务中的多个操作,要么都成功,要么都失败
使用事务在事务中的多个操作,要么都成功,要么都失败
通过c.setAutoCommit(false);关闭自动提交
使用mit();进行手动提交packagejdbc;使用事务27
c.setAutoCommit(false);
//加血的SQLStringsql1="updateherosethp=hp+1whereid=22";s.execute(sql1);
//减血的SQL//不小心写错写成了updata(而非update)
Stringsql2="updataherosethp=hp-1whereid=22";s.execute(sql2);
//手动提交
mit();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}
28packagecharactor;publicclassHero{//增加id属性
publicintid;publicStringname;publicfloathp;publicintdamage;}ORM=ObjectRelationshipDatabaseMapping
对象和关系数据库的映射
简单说,一个对象,对应数据库里的一条记录例:根据id返回一个Hero对象先构建一个Hero类packagecharactor;ORM=ObjectR29packagejdbc;
importcharactor.Hero;
publicclassTestJDBC{publicstaticHeroget(intid){Herohero=null;}catch(ClassNotFoundExceptione){e.printStackTrace();}Statements=c.createStatement();){
Stringsql="select*fromherowhereid="+id;
packagejdbc;30
ResultSetrs=s.executeQuery(sql);
//因为id是唯一的,ResultSet最多只能有一条记录
//所以使用if代替whileif(rs.next()){hero=newHero();Stringname=rs.getString(2);floathp=rs.getFloat("hp");intdamage=rs.getInt(4);=name;hero.hp=hp;hero.damage=damage;hero.id=id;}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnhero;}publicstaticvoidmain(String[]args){Heroh=get(22);}
31packagejdbc;
publicinterfaceDAO<T>{//增加
publicvoidadd(Tt);//修改
publicvoidupdate(Tt);//删除
publicvoiddelete(intid);//获取
publicTget(intid);//查询
publicList<T>list();//分页查询
publicList<T>list(intstart,intcount);}DAO=Database
Access
Object
数据库访问对象
实际上就是运用了练习-ORM中的思路,把数据库相关的操作都封装在这个类里面,其他地方看不到JDBC的代码packagejdbc;DAO=Database
Acce32packagejdbc;
importcharactor.Hero;
publicclassHeroDAO{
把驱动的初始化放在了构造方法HeroDAO里:因为驱动初始化值需要执行一次,所以放在这里更合适,其他方法里也不需要写了,代码更简洁。提供了一个getConnection方法返回连接,所有的数据库操作都需要事先拿到一个数据库连接Connection,以前的做法每个方法里都会写一个,如果要改动密码,那么每个地方都需要修改。通过这种方式,只需要修改这一个地方就可以了。代码变得更容易维护,而且也更加简洁。packagejdbc;把驱动的初始化放在了构造方法Her33publicHeroDAO(){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}}
publicConnectiongetConnection()throwsSQLException{"admin");}
publicHeroDAO(){34publicintgetTotal(){inttotal=0;try(Connectionc=getConnection();Statements=c.createStatement();){
Stringsql="selectcount(*)fromhero";
ResultSetrs=s.executeQuery(sql);while(rs.next()){total=rs.getInt(1);}
}catch(SQLExceptione){
e.printStackTrace();}returntotal;}
publicintgetTotal(){35publicvoidadd(Herohero){Stringsql="insertintoherovalues(null,?,?,?)";try(Connectionc=getConnection();PreparedStatementps=c.prepareStatement(sql);){ps.setString(1,);ps.setFloat(2,hero.hp);ps.setInt(3,hero.damage);ps.execute(); ResultSetrs=ps.getGeneratedKeys();if(rs.next()){intid=rs.getInt(1);hero.id=id;}}catch(SQLExceptione){e.printStackTrace();}}publicvoidupdate(Herohero){
Stringsql="updateherosetname=?,hp=?,damage=?whereid=?";try(Connectionc=getConnection();PreparedStatementps=c.prepareStatement(sql);){ps.setString(1,);ps.setFloat(2,hero.hp);ps.setInt(3,hero.damage);ps.setInt(4,hero.id);ps.execute();}catch(SQLExceptione){e.printStackTrace();}}
《Java教程数据库》课件36《Java教程数据库》PPT课件本课件仅供大家学习学习学习完毕请自觉删除谢谢本课件仅供大家学习学习学习完毕请自觉删除谢谢《Java教程数据库》PPT课件本课件仅供大家学习学Java入门Java入门384Java数据库技术4.1MySQL和JDBC4.2
使用JDBC4.3
实例4Java数据库技术4.1MySQL和JDB394.1MySQL和JDBC概述MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于
Oracle
旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一,对于一般的个人使用者和中小型企业来说,MySQL提供的功能绰绰有余。4.1MySQL和JDBC概述MySQL是一个关系型数据40创建数据库test:createdatabasetest创建表hero:CREATETABLEhero(idint(11)AUTO_INCREMENT,namevarchar(30),hpfloat,damageint(11),PRIMARYKEY(id))DEFAULTCHARSET=utf8;插入一条记录盖伦到表中:insertintoherovalues(null,'盖伦',616,100)查询所有数据:select*fromhero统计表中有多少条数据:selectcount(*)fromhero显示前5条数据:select*fromherolimit0,5修改:updateherosethp=818whereid=1删除:deletefromherowhereid=1操作语句创建数据库test:createdatabasetes414.1MySQL和JDBCJDBC(JavaDatabaseConnection,Java数据库连接)是一种用于执行SQL语句的JavaAPI(应用程序设计接口),它由一些Java语言写的类和界面组成。JDBC提供了一种标准的应用程序设计接口,使得开发人员使用Java语言开发完整的数据库应用程序变得极为简单。通过JDBC,开发人员几乎可以将SQL语句传递给任何一种数据库,而无需为各种数据库编写单独的访问程序。JDBC可以自动将SQL语句传递给相应的数据库管理系统。4.1MySQL和JDBCJDBC(Ja42访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。
为了代码能够使用第三方的类,需要为项目导入mysql的专用Jar包。
通常都会把项目用到的jar包统一放在项目的lib目录下导包步骤:右键project->property->javabuildpath->libaries->addexternaljars访问MySQL数据库需要用到第三方的类,这些第三方的类,都被43packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){ //初始化驱动
try{//驱动类//就在中
//如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
数据库驱动加载成功!");
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}初始化驱动通过Class.forName初始化驱动类
就在中packagejdbc;初始化驱动44JDBC扩展了Java的功能,例如在Applet中应用JDBC,可以实现与远程数据库的连接,实现不同平台数据库之间的对话。简单地说,JDBC完成下面三个操作:(1)与一个数据库建立连接。Connectioncon=DriverManager.getConnection("jdbc:odbc:CallCenter","sa","");(2)向数据库发送SQL语句。stmt=con.createStatement();rs=stmt.executeQuery("SELECTCID,CPinfromtCustomerWHERECID='z1'");JDBC扩展了Java的功能,例如在Appl45(3)处理数据库返回的结果。while(rs.next()){ StringtheInt=rs.getString("CID"); Stringstr=rs.getString("CPin"); ...}(3)处理数据库返回的结果。464.2使用JDBCJDBC的接口分为两个层次:一个是面向程序开发人员的JDBCAPI;另外一个是底层的JDBCDriverAPI。JDBCAPI被描述成为一组抽象的Java接口,应用程序可以对某个数据库打开连接,执行SQL语句并且处理结果。最重要的接口如下::处理驱动的调入并且对产生新的数据库连接提供支持。:代表对特定数据库的连接。:代表一个特定的容器,以对一个特定的数据库执行SQL语句。:控制对一个特定语句的行数据的存取。4.2使用JDBCJDBC的接口分为两47
其中又有两个子类型::用于执行预编译的SQL语句。:用于执行对一个数据库内嵌过程的调用。JDBCDriverAPI是指接口,封装了不同数据库的驱动程序(像Access、Foxpro、SQLServer等)。由于它是数据库底层处理,所以必须提供对、java.sql.Statement、和的实现。其中又有两个子类型:48packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){ try{
//建立与数据库的Connection连接
//这里需要提供:
//数据库所处于的本机)//数据库的端口号:3306(mysql专用端口号)
//数据库名称how2java//编码方式UTF-8//账号root//密码admin
连接数据库packagejdbc;连接数据库49//接上面的代码Connectionc=DriverManager.getConnection("root","admin");
连接成功,获取连接对象:"+c);
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}//接上面的代码50packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{
Statement是用于执行SQL语句的,比如增加,删除packagejdbc;Statement是用于执行S51Connectionc=DriverManager.getConnection("root","admin");
//注意:使用的是//不要不小心使用到:Statements=c.createStatement();
获取Statement对象:"+s);
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}《Java教程数据库》课件52packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{
Connectionc=DriverManager.getConnection("root","admin");
s.execute执行sql语句
执行成功后,用mysql-front进行查看,明确插入成功packagejdbc;s.execute执行sql语53Statements=c.createStatement();
//准备sql语句
//注意:字符串要用单引号'Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";s.execute(sql);
执行插入语句成功");
}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}执行SQL语句之前要确保数据库test中有表hero的存在,如果没有,需要事先创建表执行SQL语句之前要确保数据库test中有表hero的存在,54在回收垃圾语句后面加上下面语句finally{//数据库的连接时有限资源,相关操作结束后,养成关闭数据库的好习惯
//先关闭Statementif(s!=null)try{s.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//后关闭Connectionif(c!=null)try{c.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}数据库的连接是有限资源,相关操作结束后,养成关闭数据库的好习惯
先关闭Statement
后关闭Connection在回收垃圾语句后面加上下面语句数据库的连接是有限资源,相关操55packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){
try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
使用try-with-resource的方式自动关闭连接packagejdbc;使用try-with-resour56try("root","admin");Statements=c.createStatement();){Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";s.execute(sql);
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}《Java教程数据库》课件57Stringsql="insertintoherovalues(null,"+"'提莫'"+","+313.0f+","+50+")";Stringsql="deletefromherowhereid=5";Stringsql="updateherosetname='name5'whereid=3";增、删、改语句Stringsql="insertintohero58packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
"root","admin");Statements=c.createStatement();){
executeQuery执行SQL查询语句packagejdbc;executeQuery执行SQ59Stringsql="select*fromhero";
//执行查询语句,并把结果集返回给ResultSetResultSetrs=s.executeQuery(sql);while(rs.next()){intid=rs.getInt("id");//可以使用字段名
Stringname=rs.getString(2);//也可以使用字段的顺序
floathp=rs.getFloat("hp");intdamage=rs.getInt(4);}//不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet//rs.close();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}在取第二列的数据的时候,用的是rs.get(2),而不是get(1).这个是整个Java自带的api里唯二的地方在取第二列的数据的时候,用的是rs.get(2),而不是g60packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}
PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句创建PreparedStatement除此之外,还能能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接packagejdbc;PreparedStatement61
Stringsql="insertintoherovalues(null,?,?,?)";//根据sql语句创建PreparedStatementPreparedStatementps=c.prepareStatement(sql);){
//设置参数
ps.setString(1,"提莫");ps.setFloat(2,313.0f);ps.setInt(3,50);//执行
ps.execute();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}使用参数设置,可读性好,不易犯错有预编译机制,性能比Statement更快防止SQL注入式攻击使用参数设置,可读性好,不易犯错62packagejdbc;
publicclassTestJDBC{publicstaticvoidmain(String[]args){try{}catch(ClassNotFoundExceptione){e.printStackTrace();}Statements=c.createStatement();){//有事务的前提下
//在事务中的多个操作,要么都成功,要么都失败
使用事务在事务中的多个操作,要么都成功,要么都失败
通过c.setAutoCommit(false);关闭自动提交
使用mit();进行手动提交packagejdbc;使用事务63
c.setAutoCommit(false);
//加血的SQLStringsql1="updateherosethp=hp+1whereid=22";s.execute(sql1);
//减血的SQL//不小心写错写成了updata(而非update)
Stringsql2="updataherosethp=hp-1whereid=22";s.execute(sql2);
//手动提交
mit();
}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
}}
64packagecharactor;publicclassHero{//增加id属性
publicintid;publicStringname;publicfloathp;publicintdamage;}ORM=ObjectRelationshipDatabaseMapping
对象和关系数据库的映射
简单说,一个对象,对应数据库里的一条记录例:根据id返回一个Hero对象先构建一个Hero类packagecharactor;ORM=ObjectR65packagejdbc;
importcharactor.Hero;
publicclassTestJDBC{publicstaticHeroget(intid){Herohero=null;}catch(ClassNotFoundExceptione){e.printStackTrace();}Statements=c.createStatement();){
Stringsql="select*fromherowhereid="+id;
packagejdbc;66
ResultSetrs=s.executeQuery(sql);
//因为id是唯一的,ResultSet最多只能有一条记录
//所以使用if代替whileif(rs.next()){hero=newHero();Stringname=rs.getString(2);floathp=rs.getFloat("hp");intdamage=rs.getInt(4);=name;hero.hp=hp;hero.damage=damage;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《交通安全伴我行:3 发生交通事故后》教学设计-2023-2024学年六年级下册综合实践活动沪科黔科版
- 《包装的学问》(教学设计)-2023-2024学年五年级下册数学北师大版
- 血栓后遗症的护理措施
- 14《我要的是葫芦》(教学设计)2024-2025学年统编版语文二年级上册
- 血液科基础知识
- Unit 2 My week Part B Read and write Part C Story time(教学设计)-2024-2025学年人教PEP版英语五年级上册
- Starter Section 3 Saying Hello (教学设计)-2024-2025学年北师大版(2024)初中英语七年级上册
- 2018年春人教版九年级历史上册教学设计:第15课 血腥的资本积累
- 九年级历史下册 第二单元 第二次工业革命和近代科学文化 第7课 近代科学与文化教学设计3 新人教版
- 九年级历史下册 第一单元 苏联社会主义道路的探索 第2课 对社会主义道路的探索教学设计 新人教版
- 自身免疫性肝病的诊治进展
- 管道沟槽开挖专项施工方案
- 广州新华学院
- 部编版七年级下册道法期中试卷1
- 知识图谱-课件
- 百年战争简史
- 2023年托幼机构幼儿园卫生保健人员考试题库及参考答案
- 2023年IDSA念珠菌病指南中文翻译
- 天生为卤人生为盐 课件
- 中医护理耳穴压豆课件
- YS/T 713-2009干式变压器用铝带、箔材
评论
0/150
提交评论