Java培训课程Java数据库编程_第1页
Java培训课程Java数据库编程_第2页
Java培训课程Java数据库编程_第3页
Java培训课程Java数据库编程_第4页
Java培训课程Java数据库编程_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java数据库编程JDBC:Java DataBase Connection本季目标1、JDBC的分类2、JDBC的主要操作类和接口:DriverManager、Connection、Statement、PreparedStatement、ResultSet3、如何使用JDBC连接MySQL数据库上有MYSQL的教程。1、什么是JDBC?JDBC是JAVA提供的一个服务,专门用于访问数据库操作,而且注意:JDBC定义的是一个数据库访问的标准,所以里面基本上都是一系列的接口。各个数据库厂商如果要想支持JDBC操作,则肯定要提供一组相关的类,这些类肯定都是提供接口子类实现。2

2、、JDBC的分类JDBC-ODBC桥连接JDBC直接连接JDBC网络连接3、什么是ODBC?ODBC是微软公司定义的一个开放式数据库连接(Open DataBase Connection),使用ODBC可以连接各种数据库(前提:必须在windows中安装好驱动才可以)。在SUN 的JDK中默认提供了此数据库的驱动程序,所以JDK本身可以直接使用JDBC-ODBC进行访问。访问的过程:JDBC - ODBC - 数据库 (性能比较低)如果直接使用JDBC访问,访问过程:JDBC - 数据库(性能较高)4、主要操作接口 Connection:表示连接数据库的接口 Statement:表示操作数据库

3、的接口(执行SQL语句)|- PreparedStatement:操作SQL语句,但是可以进行预处理操作。 ResultSet:表示查询之后的返回结果5、使用JDBC-ODBC操作Access数据库PS:以上内容由北大青鸟佳音旗舰门老师从网络整理新建一个access空数据库建立好了一个数据库,数据库的名字为:mydb.mdb在数据库中创建表:建立一张person表,包括以下字段: id - 自动增长 name - 姓名 age - 年龄因为我们的目的是使用JDBC-ODBC桥连接操作数据库,所以此处必须先配置ODBC数据源:管理工具 - 数据源(ODBC)配置一个全局的数据源名称在ODBC上设

4、置了一个数据库的别名,此别名testDB代表mydb.mdb。以后在操作的时候就是使用testDB即可。如果要设置access数据源名称,则必须先关闭打开的access文件之后再设置保存并关闭access数据库那么以后直接使用testDB就可以访问数据库了。1、操作数据库的步骤(JDBC) 加载数据库的驱动程序:Class.forName(驱动程序) ; 通过连接管理器,取得一个数据库的连接:DriverManager.getConnection(连接地址) 通过连接创建数据库的操作对象:Statement 操作数据库 - 执行SQL语句 关闭数据库操作我们现在使用Eclipse新建一个JDB

5、CProject项目来测试下哈在JDBC中所有的操作步骤都是一样,但是驱动程序和连接地址是不一样的,ODBC的: 驱动程序:sun.jdbc.odbc.JdbcOdbcDriver 连接地址:jdbc:odbc:ODBC配置的DSN名称(jdbc:odbc:testDB)JDBC中的所有操作的包都是java.sql包中JDBCDemo01:packagecom.redking.jdbc.demo; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.sq

6、l.Statement; publicclassJDBCDemo01 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstaticfinalString DBURL =jdbc:odbc:testDB; publicstaticvoidmain(String args) /数据库连接对象 Connection conn =null; /数据库操作对象 Statement stmt =null; /1、加载驱动程序 try Class.forName(DBDRIVER); catch(ClassNotFo

7、undException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一条数据 String sql =INSERT INTO person(name,age) VALUES (Michael,20); try stmt = conn.createStatement(); catch(SQLException e) e.printStackTrac

8、e(); /4、执行语句 try stmt.executeUpdate(sql); catch(SQLException e) e.printStackTrace(); /5、关闭操作,步骤相反哈 try stmt.close(); conn.close(); catch(SQLException e) e.printStackTrace(); 验证一下,有没问题,没有报错,正常现在看下access中数据有没写入进出哈现在所插入的数据都是固定死的,那么能不能插入一些灵活的数据呢?例如:有些数据可以直接从键盘上输入。JDBCDemo02:packagecom.redking.jdbc.demo;

9、 importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.sql.Statement; publicclassJDBCDemo02 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstati

10、cfinalString DBURL =jdbc:odbc:testDB; publicstaticvoidmain(String args) String name =null; intage = 0; BufferedReader buf =newBufferedReader(newInputStreamReader(System.in); System.out.println(请输入姓名:); try name = buf.readLine(); catch(IOException e1) e1.printStackTrace(); System.out.println(请输入年龄:);

11、 try age = Integer.parseInt(buf.readLine(); catch(NumberFormatException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch(IOException e1) / TODO Auto-generated catch block e1.printStackTrace(); /数据库连接对象 Connection conn =null; /数据库操作对象 Statement stmt =null; /1、加载驱动程序 try Class.forName

12、(DBDRIVER); catch(ClassNotFoundException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一条数据 String sql =INSERT INTO person(name,age) VALUES (+name+,+age+); System.out.println(sql); try stmt = conn.cr

13、eateStatement(); catch(SQLException e) e.printStackTrace(); /4、执行语句 try stmt.executeUpdate(sql); catch(SQLException e) e.printStackTrace(); /5、关闭操作,步骤相反哈 try stmt.close(); conn.close(); catch(SQLException e) e.printStackTrace(); 看下效果:已经写入数据库了哈那能不能修改一条数据呢?JDBCDemo03:packagecom.redking.jdbc.demo; impo

14、rtjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.sql.Statement; publicclassJDBCDemo03 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstaticfinalString DBURL =jdbc:odbc:testDB; publicstaticvoidmain(String args) /数据库连接对象 Connection con

15、n =null; /数据库操作对象 Statement stmt =null; /1、加载驱动程序 try Class.forName(DBDRIVER); catch(ClassNotFoundException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一条数据 String sql =UPDATE person SET name=51cto

16、,age=25 WHERE id=4; try stmt = conn.createStatement(); catch(SQLException e) e.printStackTrace(); /4、执行语句 try stmt.executeUpdate(sql); catch(SQLException e) e.printStackTrace(); /5、关闭操作,步骤相反哈 try stmt.close(); conn.close(); catch(SQLException e) e.printStackTrace(); 就改了一行代码,看下效果,有没改过来哈现在把ID为4的数据删除掉J

17、DBCDemo04:packagecom.redking.jdbc.demo; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.sql.Statement; publicclassJDBCDemo04 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstaticfinalString DBURL =jdbc:odbc:testDB; publicstaticv

18、oidmain(String args) /数据库连接对象 Connection conn =null; /数据库操作对象 Statement stmt =null; /1、加载驱动程序 try Class.forName(DBDRIVER); catch(ClassNotFoundException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一

19、条数据 String sql =DELETE FROM person WHERE id=4; try stmt = conn.createStatement(); catch(SQLException e) e.printStackTrace(); /4、执行语句 try stmt.executeUpdate(sql); catch(SQLException e) e.printStackTrace(); /5、关闭操作,步骤相反哈 try stmt.close(); conn.close(); catch(SQLException e) e.printStackTrace(); 看下效果,有

20、没删除了哈注意:在插入的程序处实际上存在了一点问题:例如:现在要输入姓名为:MrWangINSERT INTO person(name,age) VALUES (MrWang,30)一般来说在使用JDBC 操作数据库的时候,往往很少会去使用Statement 进行操作,而经常使用Statement的子接口PreparedStatement进行操作。PreparedStatement是预处理,表示先在数据库中插入一条信息,但是信息的内容暂时不确定,等待用户通过专门的方法进行插入。JDBCDemo05:packagecom.redking.jdbc.demo; importjava.io.Buff

21、eredReader; importjava.io.IOException; importjava.io.InputStreamReader; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.PreparedStatement; importjava.sql.SQLException;publicclassJDBCDemo05 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstaticfinalString

22、 DBURL =jdbc:odbc:testDB; publicstaticvoidmain(String args) String name =null; intage = 0; BufferedReader buf =newBufferedReader(newInputStreamReader(System.in); System.out.println(请输入姓名:); try name = buf.readLine(); catch(IOException e1) e1.printStackTrace(); System.out.println(请输入年龄:); try age = I

23、nteger.parseInt(buf.readLine(); catch(NumberFormatException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch(IOException e1) / TODO Auto-generated catch block e1.printStackTrace(); /数据库连接对象 Connection conn =null; /数据库操作对象 PreparedStatement pstmt =null; /1、加载驱动程序 try Class.forName(DB

24、DRIVER); catch(ClassNotFoundException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一条数据 String sql =INSERT INTO person(name,age) VALUES (?,?); System.out.println(sql); try /现在暂时占着,只是还不执行哈 pstmt = co

25、nn.prepareStatement(sql); catch(SQLException e) e.printStackTrace(); /4、执行语句 /执行语句之前必须设置内容 try /设置好内容 pstmt.setString(1,name); pstmt.setInt(2, age); /执行数据库更新操作 pstmt.executeUpdate(); catch(SQLException e) e.printStackTrace(); /5、关闭操作,步骤相反哈 try pstmt.close(); conn.close(); catch(SQLException e) e.pri

26、ntStackTrace(); 看下效果,现在有没报错哈看下数据库中有没写入了哈一般在实际的开发中都去使用PreparedStatement,而很少会有人去直接使用Statement进行操作。进行查询:一般查询指的是执行SELECT 语句,SELECT 语句执行后实际上是会返回一组的数据(在内存中保存的)。必须使用ResultSet接口进行接收,实际此处也不是很清楚会有多行数据。Next()表示把指针向下移动一个位置。JDBCDemo06:packagecom.redking.jdbc.demo; importjava.sql.Connection; importjava.sql.Driver

27、Manager; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.sql.SQLException; publicclassJDBCDemo06 publicstaticfinalString DBDRIVER =sun.jdbc.odbc.JdbcOdbcDriver; publicstaticfinalString DBURL =jdbc:odbc:testDB; publicstaticvoidmain(String args) /数据库连接对象 Connection conn =null; /

28、数据库操作对象 PreparedStatement pstmt =null; /数据库查询结果集对象 ResultSet rs =null; /1、加载驱动程序 try Class.forName(DBDRIVER); catch(ClassNotFoundException e) e.printStackTrace(); /2、连接数据库 /通过连接管理器连接数据库 try conn = DriverManager.getConnection(DBURL); catch(SQLException e) e.printStackTrace(); /3、向数据库中插入一条数据 /查询全部数据,查

29、询数据的时候绝对不要写“*” String sql =SELECT id,name,age FROM person; System.out.println(sql); try /现在暂时占着,只是还不执行哈 pstmt = conn.prepareStatement(sql); catch(SQLException e) e.printStackTrace(); /4、执行语句 /执行语句之前必须设置内容 try /执行数据库查询操作,返回的结果全部放在ResultSet之中 rs = pstmt.executeQuery(); catch(SQLException e) e.printSta

30、ckTrace(); /下面开始依次循环取出内容,先判断后面有没内容,如果有则输出哈 try while(rs.next() /Result必须按类型取值 intid = rs.getInt(id); String name = rs.getString(name); intage = rs.getInt(age); System.out.println(ID = +id+;name = +name+;age = +age); catch(SQLException e1) / TODO Auto-generated catch block e1.printStackTrace(); /5、关闭

31、操作,步骤相反哈 try rs.close(); pstmt.close(); conn.close(); catch(SQLException e) e.printStackTrace(); 看下效果:总结JDBC操作数据库的整体步骤:1、加载驱动程序:|- Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;2、连接数据库:|- Connection conn = DriverManager.getConnection(jdbc:odbc:testDB) ;3、实例化操作对象:|- Statement stmt = conn.createStateme

32、nt() ;- 本身是没有SQL语句的|- PreparedStatement pstmt = conn.prepareStatement(sql) ;-在实例化时必须有SQL语句4、进行数据库的CRUD操作|- Statement|- 更新:public int executeUpdate(sql)|- 查询:public ResultSet executeQuery(sql)|- PreparedStatement|- 更新:先进行设置值(setXxx()),public int executeUpdate()|- 查询:public ResultSet executeQuery() ;|- ResulSet:|- 所有的查询记录全部放在此对象之中,通过getXxx()方法取得|- 取得的时候可以直接写入列的名称|- 也可以写入编号5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论