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

下载本文档

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

文档简介

1、 Java数据库编程JDBC:Java DataBase Connection本季目标1、JDBC的分类 2、JDBC的主要操作类和接口: DriverManager、Connection、Statement、PreparedStatement、ResultSet 3、如何使用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 -> 数据库 (性能比较低) 

3、如果直接使用JDBC访问,访问过程:JDBC -> 数据库(性能较高) 4、主要操作接口 · Connection:表示连接数据库的接口 · Statement:表示操作数据库的接口(执行SQL语句) |- PreparedStatement:操作SQL语句,但是可以进行预处理操作。 · ResultSet:表示查询之后的返回结果 5、使用JDBC-ODBC操作Access数据库PS:以上内容由北大青鸟佳音旗舰门老师从网络整理新建一个access空数据库 建立好了一个数据库,数据库的名字为

4、:mydb.mdb 在数据库中创建表: 建立一张person表,包括以下字段: · id -> 自动增长 · name -> 姓名 · age -> 年龄 因为我们的目的是使用JDBC-ODBC桥连接操作数据库,所以此处必须先配置ODBC数据源:管理工具 -> 数据源(ODBC) 配置一个全局的数据源名称 在ODBC上设置了一个数据库的别名,此别名testDB代表mydb.mdb。以后在操作的时候就是使用testDB即可。  如果要设置acc

5、ess数据源名称,则必须先关闭打开的access文件之后再设置 保存并关闭access数据库  那么以后直接使用testDB就可以访问数据库了。1、操作数据库的步骤(JDBC) · 加载数据库的驱动程序:Class.forName("驱动程序") ; · 通过连接管理器,取得一个数据库的连接:DriverManager.getConnection(连接地址) · 通过连接创建数据库的操作对象:Statement · 操作数据库 -> 执行SQL语句 

6、· 关闭数据库操作我们现在使用Eclipse新建一个JDBCProject项目来测试下哈 在JDBC中所有的操作步骤都是一样,但是驱动程序和连接地址是不一样的,ODBC的: · 驱动程序:sun.jdbc.odbc.JdbcOdbcDriver · 连接地址:jdbc:odbc:ODBC配置的DSN名称(jdbc:odbc:testDB)JDBC中的所有操作的包都是java.sql包中JDBCDemo01:package com.redking.jdbc.demo;    import 

7、;java.sql.Connection;    import java.sql.DriverManager;    import java.sql.SQLException;    import java.sql.Statement;    public class JDBCDemo01             public 

8、static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"            public static final String DBURL = "jdbc:odbc:testDB"            public stati

9、c void main(String args)                     /数据库连接对象                    Connection conn = null;            &#

10、160;       /数据库操作对象                    Statement stmt = null;                    /1、加载驱动程序          

11、          try                             Class.forName(DBDRIVER);                     catch

12、60;(ClassNotFoundException e)                             e.printStackTrace();                             

13、60;          /2、连接数据库                    /通过连接管理器连接数据库                    try          

14、60;                  conn = DriverManager.getConnection(DBURL);                     catch (SQLException e)              

15、               e.printStackTrace();                                        /3、向数据库中插入一条数据     

16、              String sql = "INSERT INTO person(name,age) VALUES ('Michael',20)"                    try             &#

17、160;               stmt = conn.createStatement();                     catch (SQLException e)                   

18、0;         e.printStackTrace();                                        /4、执行语句             

19、;       try                             stmt.executeUpdate(sql);                     catch (SQLExcep

20、tion e)                             e.printStackTrace();                                  

21、      /5、关闭操作,步骤相反哈                    try                             stmt.close();     

22、                      conn.close();                     catch (SQLException e)                 

23、            e.printStackTrace();                                    验证一下,有没问题,没有报错,正常 现在看下access中数据有没写入进出哈 现在所插入的数据都是固定死的,那么能

24、不能插入一些灵活的数据呢?例如:有些数据可以直接从键盘上输入。JDBCDemo02:package com.redking.jdbc.demo;    import java.io.BufferedReader;    import java.io.IOException;    import java.io.InputStreamReader;    import java.sql.Connection;  

25、60; import java.sql.DriverManager;    import java.sql.SQLException;    import java.sql.Statement;    public class JDBCDemo02             public static final String D

26、BDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"            public static final String DBURL = "jdbc:odbc:testDB"            public static void main(String ar

27、gs)                     String name = null;                    int age = 0;                  &#

28、160; BufferedReader buf = new BufferedReader(new InputStreamReader(System.in);                    System.out.println("请输入姓名:");                   

29、; try                             name = buf.readLine();                     catch (IOException e1)     &

30、#160;                       e1.printStackTrace();                                        System

31、.out.println("请输入年龄:");                    try                             age = Integer.parseInt(buf.readLine(); 

32、                   catch (NumberFormatException e1)                             / TODO Auto-generated catch block    

33、60;                       e1.printStackTrace();                     catch (IOException e1)              &

34、#160;              / TODO Auto-generated catch block                            e1.printStackTrace();             &

35、#160;                          /数据库连接对象                    Connection conn = null;              

36、;      /数据库操作对象                    Statement stmt = null;                    /1、加载驱动程序            &#

37、160;       try                             Class.forName(DBDRIVER);                     catch (Class

38、NotFoundException e)                             e.printStackTrace();                               

39、         /2、连接数据库                    /通过连接管理器连接数据库                    try            

40、                 conn = DriverManager.getConnection(DBURL);                     catch (SQLException e)                &#

41、160;            e.printStackTrace();                                        /3、向数据库中插入一条数据       

42、60;            String sql = "INSERT INTO person(name,age) VALUES ('"+name+"',"+age+")"                    System.out.println(sql);      &

43、#160;             try                             stmt = conn.createStatement();                

44、0;    catch (SQLException e)                             e.printStackTrace();                          &#

45、160;             /4、执行语句                    try                             stmt.exec

46、uteUpdate(sql);                     catch (SQLException e)                             e.printStackTrace();    

47、0;                                   /5、关闭操作,步骤相反哈                    try        

48、0;                    stmt.close();                            conn.close();              

49、       catch (SQLException e)                             e.printStackTrace();                       

50、0;            看下效果: 已经写入数据库了哈 那能不能修改一条数据呢?JDBCDemo03:package com.redking.jdbc.demo;    import java.sql.Connection;    import java.sql.DriverManager;    import java.sql.SQLException

51、;    import java.sql.Statement;    public class JDBCDemo03             public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"         &#

52、160;  public static final String DBURL = "jdbc:odbc:testDB"            public static void main(String args)                     /数

53、据库连接对象                    Connection conn = null;                    /数据库操作对象                   

54、; Statement stmt = null;                    /1、加载驱动程序                    try                 &#

55、160;           Class.forName(DBDRIVER);                     catch (ClassNotFoundException e)                       

56、      e.printStackTrace();                                        /2、连接数据库                

57、    /通过连接管理器连接数据库                    try                             conn = DriverManager.getConnection(DBURL);

58、0;                    catch (SQLException e)                             e.printStackTrace();         

59、60;                              /3、向数据库中插入一条数据                    String sql = "UPDATE person SET name='51cto',age=2

60、5 WHERE id=4"                    try                             stmt = conn.createStatement();      

61、0;              catch (SQLException e)                             e.printStackTrace();               

62、60;                        /4、执行语句                    try                    

63、60;        stmt.executeUpdate(sql);                     catch (SQLException e)                            

64、0;e.printStackTrace();                                        /5、关闭操作,步骤相反哈                    

65、try                             stmt.close();                            conn.close();    

66、                 catch (SQLException e)                             e.printStackTrace();             

67、;                        就改了一行代码,看下效果,有没改过来哈 现在把ID为4的数据删除掉JDBCDemo04:package com.redking.jdbc.demo;    import java.sql.Connection;    import java.sql.DriverManager;&

68、#160;   import java.sql.SQLException;    import java.sql.Statement;    public class JDBCDemo04             public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDr

69、iver"            public static final String DBURL = "jdbc:odbc:testDB"            public static void main(String args)          &#

70、160;          /数据库连接对象                    Connection conn = null;                    /数据库操作对象       

71、             Statement stmt = null;                    /1、加载驱动程序                    try     

72、60;                       Class.forName(DBDRIVER);                     catch (ClassNotFoundException e)           &

73、#160;                 e.printStackTrace();                                        /2、连接数据库    &

74、#160;               /通过连接管理器连接数据库                    try                            &

75、#160;conn = DriverManager.getConnection(DBURL);                     catch (SQLException e)                             e.printStac

76、kTrace();                                        /3、向数据库中插入一条数据                    String sql = 

77、;"DELETE FROM person WHERE id=4"                    try                             stmt = conn.createStatement(); 

78、                    catch (SQLException e)                             e.printStackTrace();          

79、;                              /4、执行语句                    try               

80、;              stmt.executeUpdate(sql);                     catch (SQLException e)                       

81、      e.printStackTrace();                                        /5、关闭操作,步骤相反哈               &

82、#160;    try                             stmt.close();                            conn.clo

83、se();                     catch (SQLException e)                             e.printStackTrace();       &

84、#160;                            看下效果,有没删除了哈 注意: 在插入的程序处实际上存在了一点问题: 例如:现在要输入姓名为:Mr'Wang INSERT INTO person(name,age) VALUES ('Mr'Wang',30) 一般来说在使用JDBC 操作数据库的时候,往往很少

85、会去使用Statement 进行操作,而经常使用Statement的子接口PreparedStatement进行操作。 PreparedStatement 是预处理,表示先在数据库中插入一条信息,但是信息的内容暂时不确定,等待用户通过专门的方法进行插入。JDBCDemo05:package com.redking.jdbc.demo;    import java.io.BufferedReader;    import java.io.IOException;   

86、; import java.io.InputStreamReader;    import java.sql.Connection;    import java.sql.DriverManager;    import java.sql.PreparedStatement;    import java.sql.SQLException; public class JDBCDemo05

87、             public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"            public static final String DBURL = "jdbc:odbc:testDB"

88、0;           public static void main(String args)                     String name = null;                   &#

89、160;int age = 0;                    BufferedReader buf = new BufferedReader(new InputStreamReader(System.in);                    System.out.println(&q

90、uot;请输入姓名:");                    try                             name = buf.readLine();        

91、             catch (IOException e1)                             e1.printStackTrace();                

92、0;                       System.out.println("请输入年龄:");                    try                &#

93、160;            age = Integer.parseInt(buf.readLine();                     catch (NumberFormatException e1)                  

94、           / TODO Auto-generated catch block                            e1.printStackTrace();                 

95、    catch (IOException e1)                             / TODO Auto-generated catch block                       

96、;     e1.printStackTrace();                                        /数据库连接对象                

97、0;   Connection conn = null;                    /数据库操作对象                    PreparedStatement pstmt = null;         

98、0;          /1、加载驱动程序                    try                             Class.forName(DBDRIVER

99、);                     catch (ClassNotFoundException e)                             e.printStackTrace();     

100、                                  /2、连接数据库                    /通过连接管理器连接数据库         &

101、#160;          try                             conn = DriverManager.getConnection(DBURL);                 

102、;    catch (SQLException e)                             e.printStackTrace();                          

103、60;             /3、向数据库中插入一条数据                    String sql = "INSERT INTO person(name,age) VALUES (?,?)"               

104、0;    System.out.println(sql);                    try                             /现在暂时占着,只是还不执行哈    

105、0;                       pstmt = conn.prepareStatement(sql);                     catch (SQLException e)           &

106、#160;                 e.printStackTrace();                                        /4、执行语句    &#

107、160;               /执行语句之前必须设置内容                    try                            &#

108、160;/设置好内容                            pstmt.setString(1,name);                            pstmt.setInt(2, age)

109、;                            /执行数据库更新操作                            pstmt.executeUpdate();    &#

110、160;                catch (SQLException e)                             e.printStackTrace();             &

111、#160;                          /5、关闭操作,步骤相反哈                    try                 &

112、#160;           pstmt.close();                            conn.close();                     catch

113、60;(SQLException e)                             e.printStackTrace();                               &

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

115、;    import java.sql.Connection;    import java.sql.DriverManager;    import java.sql.PreparedStatement;    import java.sql.ResultSet;    import java.sql.SQLException;    public cl

116、ass JDBCDemo06             public static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"            public static final String DBURL = "jdbc:od

117、bc:testDB"            public static void main(String args)                     /数据库连接对象                 

118、  Connection conn = null;                    /数据库操作对象                    PreparedStatement pstmt = null;          &

119、#160;         /数据库查询结果集对象                    ResultSet rs = null;                    /1、加载驱动程序       

120、0;            try                             Class.forName(DBDRIVER);                     

121、;catch (ClassNotFoundException e)                             e.printStackTrace();                           &

122、#160;            /2、连接数据库                    /通过连接管理器连接数据库                    try        &

123、#160;                    conn = DriverManager.getConnection(DBURL);                     catch (SQLException e)           

124、0;                 e.printStackTrace();                                        /3、向数据库中插入一条数据   

125、0;                /查询全部数据,查询数据的时候绝对不要写“*”                    String sql = "SELECT id,name,age FROM person"             &

126、#160;      System.out.println(sql);                    try                             /现在暂时占着,只是还不执行哈   

127、                         pstmt = conn.prepareStatement(sql);                     catch (SQLException e)        

128、0;                    e.printStackTrace();                                        /4、执行语句  

129、0;                 /执行语句之前必须设置内容                    try                          

130、;   /执行数据库查询操作,返回的结果全部放在ResultSet之中                            rs = pstmt.executeQuery();                     catch (SQL

131、Exception e)                             e.printStackTrace();                                 &

132、#160;      /下面开始依次循环取出内容,先判断后面有没内容,如果有则输出哈                    try                             while(rs.next()&

133、#160;                                   /Result必须按类型取值                            

134、60;       int id = rs.getInt("id");                                    String name = rs.getString("name");    

135、                                int age = rs.getInt("age");                          

136、          System.out.println("ID = "+id+";name = "+name+";age = "+age);                                     &#

137、160;           catch (SQLException e1)                             / TODO Auto-generated catch block              

138、             e1.printStackTrace();                                        /5、关闭操作,步骤相反哈       &

139、#160;            try                             rs.close();                      

140、60;     pstmt.close();                            conn.close();                     catch (SQLException e)                             e.p

温馨提示

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

评论

0/150

提交评论