ImageVerifierCode 换一换
格式:DOCX , 页数:118 ,大小:1.83MB ,
资源ID:11347517      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11347517.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(韩顺平j2eeJDBC与MySQL学习笔记.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

韩顺平j2eeJDBC与MySQL学习笔记.docx

1、韩顺平j2eeJDBC与MySQL学习笔记jdbc详解+学生选课项目jdbc简介数据库驱动sun公司为统一对数据库的操作,定义一套java操作数据库的规范(接口+类),称之为jdbc。jdbc接口和类主要是放在java.sql包和javax.sql包。JDBC全称为:Java Database Connectivity (java数据库连接),它主要由接口组成。组成JDBC的2个包:java.sql和javax.sql开发JDBC应用需要以上2个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。做jdbc开发的几个前提1、引包import java.sql.*;import ja

2、vax.sql.*;2、把数据库驱动包jar包导入到java项目中,使用不同的数据库时要使用对应数据库版本的驱动。这些驱动可以到相应数据库提供商的官方网站下载。第一个JDBC程序编写一个程序,这个程序从user1表中读取数据,并打印在命令行窗口中。一、搭建实验环境:1、在oracle中创建一个库,并创建user1表和插入表的数据。user1表结构如下:id number 主键 自增长name varchar2(30)passwd varchar2(50)email varchar2(100)birthday dateage number(3)oracle下先建序列create sequence

3、 user1_seqstart with 1increment by 1minvalue 1nomaxvaluenocachenocycle;建user1表create table user1(id number primary key,name varchar2(30),passwd varchar2(50),email varchar2(100),birthday date,age number(3);2、新建一个java工程,并导入数据驱动。二、编写程序,在程序中加载数据库驱动DriverManager.registerDriver(Driver driver);Class.forNam

4、e(oracle.jdbc.driver.OracleDriver);程序详解-DriverManagerJdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个类的常用方法:DriverManager.registerDriver(new OracleDriver()注意:在实际开发中,并不推荐采用这个方法注册驱动。查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序加载两次,也就是在内存中会有两个Driver对象。推荐方式:Class.forName(oracle.jdbc.driver.OracleDriver);采用此种方式不会导致驱动对象在内存

5、中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要import驱动的API,这样可使程序不依赖具体的驱动,使程序的灵活性更高。DriverManager.getConnection(url,user,password),根据url获取数据库的链接。三、建立连接(Connection)Connection conn=DriverManager.getConnection(url,user,pass);数据库URLURL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:常用数据库URL地址的写法:Oracle-jdbc:oracle:thin:l

6、ocalhost:1521:sidSqlserver-jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=sidMySql-jdbc:mysql:/localhost:3306/sid程序详解-Connection接口Jdbc程序中的Connection,它用于代表数据库的链接,Connection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过Connection对象完成的,这个对象的常用方法:createStatement():创建向数据库发送sql的statement对象。prepareStatement(sql):创

7、建向数据库发送预编译sql的PrepareSatement对象。prepareCall(sql):创建执行存储过程的callableStatement对象。setAutoCommit(boolean autoCommit):设置事务是否自动提交。commit():在链接上提交事务。rollback():在链接上回滚事务。System.out.println(接口引用的某个类实例);将输出该类的全名十六机制的hash值,该方法常用于查看某个接口引用指向的真正对象实例的类型是什么!Connection接口连接不同的数据库,返回的对象实例类型是不同的。对Connection中的事务提交示例详解:se

8、tAutoCommit,commit(),rollback()的使用package com.oracle.jdbc.test;import java.sql.*;publicclass TestJdbcAutoCommit /使用jdbc去操作oracle数据库-事务处理setAutoCommit publicstaticvoid main(String args) Connection ct=null; Statement statement=null; String url=jdbc:oracle:thin:127.0.0.1:1521:orcl; String username=scot

9、t; String password=tiger; /1、加载驱动 try Class.forName(oracle.jdbc.driver.OracleDriver); /2、得到连接 ct=DriverManager.getConnection(url,username,password); /把事务设为不自动提交 ct.setAutoCommit(false); /3、创建sql对象(Statement/PreparedStatement/CallableStatement) statement=ct.createStatement(); /4、通过statement向数据库发出sql指

10、令 /需求:对emp表进行操作,把SMITH的sal-10给KING的sal+10 statement.executeUpdate(update emp set sal=sal-10 where ename=SMITH); statement.executeUpdate(update emp set sal=sal+10 where ename=KING); /提交所有语句 mit(); catch (Exception e) /如果事务中的sql语句中有任何错误则进行回滚操作。 try ct.rollback(); catch (SQLException e1) e1.printStackT

11、race(); e.printStackTrace(); finally /关闭资源先开后关,后开先关 if(statement!=null) try statement.close(); catch (SQLException e) e.printStackTrace(); statement=null; if(ct!=null) try ct.close(); catch (SQLException e) e.printStackTrace(); ct=null; 四、创建用于向数据库发送SQL的Statement对象,并发送SQLStatement st=conn.createState

12、ment();ResultSet rs=st.excuteQuery(sql);程序详解-ResultSetJdbc程序中的ResultSet用于代表sql语句的执行结果。ResultSet封装执行结果时,采用类似于表格的方式。ResultSet对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next()方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法。获取任意类型的数据getObject(int index)getObject(string colum

13、nName)获取指定类型的数据,如:getString(int index)getString(String columnName)提问:数据库中列的类型是varchar2,获取该列的数据调用什么方法?int类型呢?bigint类型呢?boolean类型?答:获取varchar2类型的列数据,会调用getString方法。常用数据类型转换表(oracle)SQL类型jdbc对应方法返回类型numbergetBoolean()booleannumbergetByte()bytenumbergetShort()shortnumbergetInt()intnumbergetLong()longcha

14、r,nvarchar2,varchar2getString()StringText(clob) BlobgetClob getBlob()Clob BlobDATEgetDate()java.sql.DateTIMESTAMPgetTimestamp()java.sql.TimestampnumbergetFloat()floatnumbergetDouble()double常用数据类型转换表(sql server)编号SQLServer数据库类型JDBC类型1intjava.lang.Integer2varcharjava.lang.String3charjava.lang.String4n

15、charjava.lang.String5nvarcharjava.lang.String6textjava.lang.String7ntextjava.lang.String8tinyintjava.lang.Integer9intjava.lang.Integer10tinyintjava.lang.Integer11smallintjava.lang.Integer12bitjava.lang.Boolean13bigintjava.lang.Long14floatjava.lang.Double15decimaljava.math.BigDecimal16moneyjava.math.

16、BigDecimal17smallmoneyjava.math.BigDecimal18numericjava.math.BigDecimal19realjava.lang.Float20uniqueidentifierjava.lang.String21smalldatetimejava.sql.Timestamp22datetimejava.sql.Timestamp23timestampbyte24binarybyte25varbinarybyte26imagebyte27sql_variantjava.lang.String 常用数据类型转换表(MySql)类型名称显示长度数据库类型J

17、AVA类型VARCHARL+NVARCHARjava.lang.String CHARNCHARjava.lang.StringBLOBL+NBLOBjava.lang.byteTEXT65535VARCHARjava.lang.StringINTEGER4INTEGER UNSIGNEDjava.lang.LongTINYINT3TINYINT UNSIGNEDjava.lang.Integer SMALLINT5SMALLINT UNSIGNEDjava.lang.IntegerMEDIUMINT8MEDIUMINT UNSIGNEDjava.lang.IntegerBIT1BITjava

18、.lang.BooleanBIGINT20BIGINT UNSIGNEDjava.math.BigIntegerFLOAT4+8FLOATjava.lang.FloatDOUBLE22DOUBLEjava.lang.DoubleDECIMAL11DECIMALjava.math.BigDecimalBOOLEAN1同TINYINT ID11PK(INTEGER UNSIGNED)java.lang.LongDATE10DATEjava.sql.DateTIME8TIMEjava.sql.TimeDATETIME19DATETIMEjava.sql.TimestampTIMESTAMP19TIM

19、ESTAMPjava.sql.TimestampYEAR4YEARjava.sql.Date五、从表结果集的ResultSet中取出数据,打印到命令行窗口程序详解-ResultSetResultSet还提供了对结果集进行滚动的方法:next():移动到下一行Previous():移动到前一行absolute(int row):移动到指定行row从1开始计算beforeFirst():移动resultSet的最前面afterLast():移动到resultSet的最后面ResultSet的说明:在默认情况下,rs的结果集,只能向前移动,这样rs结果集只能使用一次,不能复用。如果需要复用,则可以在

20、ct.createStatement(ResultSet.滚动类型,ResultSet.并发类型);ResultSet的可选项有:resultSetType结果集类型有三种:ResultSet.TYPE_FORWARD_ONLY 只能向下移动ResultSet.TYPE_SCROLL_INSENSITIVE 可以滚动,只读ResultSet.TYPE_SCROLL_SENSITIVE 可以滚动,可更改resultSetConcurrency并发类型有两种:ResultSet.CONCUR_READ_ONLY 只读并发ResultSet.CONCUR_UPDATABLE 可写并发ResultSe

21、t的详细讲解示例代码:package com.oracle.jdbc.test;import java.sql.*;publicclass TestJdbcResultSet /使用jdbc去操作oracle数据库-ResultSet publicstaticvoid main(String args) Connection ct=null; Statement statement=null; ResultSet rs=null; String url=jdbc:oracle:thin:127.0.0.1:1521:orcl; String username=scott; String pas

22、sword=tiger; /1、加载驱动 try Class.forName(oracle.jdbc.driver.OracleDriver); /2、得到连接 ct=DriverManager.getConnection(url,username,password); /3、创建sql对象(Statement/PreparedStatement/CallableStatement) /假设我们希望rs结果,可以滚动(可以向前,亦可向后)和只读并发 statement=ct.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.

23、CONCUR_READ_ONLY); /4、通过statement向数据库发出sql查询指令,并将返回结果集给ResultSet rs=statement.executeQuery(select * from emp); /5、取出结果集 while(rs.next() System.out.println(雇员编号:+rs.getInt(1)+姓名:+rs.getString(ename)+职位:+rs.getObject(job); /如果我们希望,重新使用rs rs.beforeFirst(); System.out.println(*); while(rs.next() System.

24、out.println(雇员编号:+rs.getInt(1)+姓名:+rs.getString(ename)+职位:+rs.getObject(job); catch (Exception e) e.printStackTrace(); finally /关闭资源先开后关,后开先关 if(rs!=null) try rs.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); rs=null; if(statement!=null) try statement.close();

25、 catch (SQLException e) e.printStackTrace(); statement=null; if(ct!=null) try ct.close(); catch (SQLException e) e.printStackTrace(); ct=null; 六、断开与数据库的连接,并释放相关资源。程序详解-释放资源jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet,Statement和Connection对象特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connectio

26、n不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。操作USER1表的java源代码package com.oracle.jdbc.test;import java.sql.*;publicclass TestJdbc /使用jdbc去操作oracle数据库 publicstaticvoid main(String args) Connection ct=null; Statement statement=null; String url=jdbc:oracle:thin:1

27、27.0.0.1:1521:orcl; String username=scott; String password=tiger; /1、加载驱动 try Class.forName(oracle.jdbc.driver.OracleDriver); /2、得到连接 ct=DriverManager.getConnection(url,username,password); /3、创建sql对象(Statement/PreparedStatement/CallableStatement) /Statement可以用来查询和操作数据库,缺点有注入漏洞。 /PreparedStatement预处理

28、sql对象,安全性和可用性较高。具有set方法可以有效防止sql注入漏洞。 /CallableStatement用来调用存储过程 statement=ct.createStatement(); /4、通过statement向数据库发出sql指令 /executeQuery用来执行DQL语句,查询操作 /executeUpdate用来执行DML语句,增删改操作 intn=statement.executeUpdate(insert into user1 values (user1_seq.nextval,alex,123,alex,sysdate,16); /可以通过n来判断sql操作是否成功! catch (Exception e) e.printStackTrace(); finally /关闭资源先开后关,后开先关 if(statement

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1