4天贯通JDBC_尚硅谷_宋红康

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

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

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

资源描述

“玩转”Java系列—————————————————————————————1【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】题目:4天贯通JDBC技术主要内容1.JDBC概述2.获取数据库连接3.使用Statement操作数据表:UPDATE/DELETE/INSERT4.使用ResultSet、ResultSetMetaData操作数据表:SELECT5.使用PreparedStatement实现数据表的DML操作向数据表中插入、读取大数据:BLOB字段6.批量处理、数据库元数据7.数据库事务8.数据库连接池C3P0数据库连接池DBCP数据库连接池9.DBUtils工具类使用QueryRunner,实现UPDATE()和QUERY()方法利用DbUtils编写DAO通用类一、概述JDBC:使用Java应用程序“操作”数据库的一门技术jdbc,提供了使用java程序连接、操作数据库的一系列的API。对于java程序来讲,只需要面向这套API进行编程即可。(面向接口的编程思想)。不同的数据库厂商只需要根据这套JDBCAPI提供各自的实现即可。这套实现类的集合即为不同数据库的驱动。java应用程序---JDBCAPI--JDBC的驱动---数据库“玩转”Java系列—————————————————————————————2【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】LAMPJavaEE.NET二、获取数据库连接//获取数据库的连接publicstaticConnectiongetConnection()throwsException{//1.获取数据库连接的基本信息//1.1创建Properties的对象,以流的形式,将配置文件中的基本信息读入程序Propertiesinfo=newProperties();info.load(newFileInputStream(jdbc.properties));//1.2提供4个基本信息:url、driverClass、user、passwordStringurl=info.getProperty(url);StringdriverClass=info.getProperty(driverClass);Stringuser=info.getProperty(user);Stringpassword=info.getProperty(password);//2.加载驱动Class.forName(driverClass);//3.使用DriverManager的getConnection(url,user,password)方法Connectionconn=DriverManager.getConnection(url,user,password);returnconn;}“玩转”Java系列—————————————————————————————3【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】publicstaticvoidclose(ResultSetrs,Statementst,Connectionconn){if(rs!=null){try{rs.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}if(st!=null){try{st.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}if(conn!=null){try{conn.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}【jdbc.properties】url=jdbc:mysql://127.0.0.1:3306/testuser=rootpassword=123456driverClass=com.mysql.jdbc.Driver#user=scott#password=tiger#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl#driverClass=oracle.jdbc.driver.OracleDriver三、Statement与ResultSet通过调用Connection对象的createStatement方法创建该对象Statementst=conn.createStatement();该对象用于执行静态的SQL语句,并且返回执行结果“玩转”Java系列—————————————————————————————4【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】Statement接口中定义了下列方法用于执行SQL语句:ResultSetexcuteQuery(Stringsql)intexcuteUpdate(Stringsql)//通用的INSSERTUPDATEDELETE方法(version1.0)publicvoidupdate(Stringsql){//1.获取数据库的连接Connectionconn=null;Statementst=null;try{conn=JDBCUtils.getConnection();//2.提供一个Statement对象,将sql传递给数据库中执行st=conn.createStatement();st.execute(sql);}catch(Exceptione){e.printStackTrace();}finally{//3.关闭Statement对象及连接JDBCUtils.close(null,st,conn);}}//通用的查询方法,返回一个对象(version1.0)publicTTget(Stringsql,ClassTclazz){Connectionconn=null;Statementst=null;ResultSetrs=null;Tt=null;try{t=clazz.newInstance();conn=JDBCUtils.getConnection();st=conn.createStatement();rs=st.executeQuery(sql);/**通过ResultSet调用getMetaData()返回一个结果集的元数据:ResultSetMetaData**1.getColumnCount():返回结果集的列数*2.getColumnLabel():返回列的别名*/ResultSetMetaDatarsmd=rs.getMetaData();intcolumnCount=rsmd.getColumnCount();if(rs.next()){for(inti=0;icolumnCount;i++){“玩转”Java系列—————————————————————————————5【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】ObjectcolumnVal=rs.getObject(i+1);//相应列的值//StringcolumnName=rsmd.getColumnName(i+1);StringcolumnName=rsmd.getColumnLabel(i+1);//使用PropertyUtils将指定对象t的指定属性columnName设置为指定的值columnValPropertyUtils.setProperty(t,columnName,columnVal);}}}catch(Exceptione){e.printStackTrace();}finally{JDBCUtils.close(rs,st,conn);}returnt;}//通用的返回多个对象的查询操作(version1.0)publicTListTgetInstances(Stringsql,ClassTclazz){Connectionconn=null;Statementst=null;ResultSetrs=null;ListTlist=newArrayListT();try{conn=JDBCUtils.getConnection();st=conn.createStatement();rs=st.executeQuery(sql);/**通过ResultSet调用getMetaData()返回一个结果集的元数据:ResultSetMetaData**1.getColumnCount():返回结果集的列数*2.getColumnLabel():返回列的别名*/ResultSetMetaDatarsmd=rs.getMetaData();intcolumnCount=rsmd.getColumnCount();while(rs.next()){Tt=clazz.newInstance();for(inti=0;icolumnCount;i++){ObjectcolumnVal=rs.getObject(i+1);//相应列的值//StringcolumnName=rsmd.getColumnName(i+1);StringcolumnName=rsmd.getColumnLabel(i+1);//使用PropertyUtils将指定对象t的指定属性columnName设置为指定的值columnValPropertyUtils.setProperty(t,columnName,columnVal);}“玩转”Java系列—————————————————————————————6【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】list.add(t);}}catch(Exceptione){e.printStackTrace();}finally{JDBCUtils.close(rs,st,conn);}returnlist;}流程://总结:两种思想:面向接口编程的思想;ORM思想:*ORM:ObjectRelationalMapping*数据库中的表与java中的一个类对应(如:customers表与Customer类对应)*数据库中表的一个列与java类的一个属性对应(如:表中的id列与Customer类的id属性对应)*数据库中表的一行(一条数据)与java类的一个对象对应两个技术:结果集的元数据:ResultSetMetaData;PropertyUtils1.结果集的元数据:ResultSetMetaData//获取:ResultSet.getMetaData();//两个方法:1)getColumnCount():获取结果集中有多少列“玩转”Java系列—————————————————————————————7【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】2)getColumnLabel():获取结果集的相应列的列名,相当于是对应的表的列的别名。--getColumnName():不用。publicvoidtestResultSetMetaData(){Connectionconn=null;Statementst=null;ResultSetrs=null;Stringsql=selectorder_idid,order_namename,order_datedatefrom`o

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

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

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

×
保存成功