第十章 JDBC

第十章:JDBC

一.JDBCJava程序连接数据库

二.驱动类型:

       ODBC:桥连(微软提供)

       JDBC 直连(SUN推出标准,由数据库厂商自行编写驱动程序。)

三.访问数据库的步骤:

       通知同学来上课

       拨号                                   ----                              加载驱动

       接通                                   ----                              建立连接

       说话(快来上课)                   ----                              执行SQL语句

       得到答复(马上来)               ----                              得到结果

       挂电话                                ----                              关闭连接

四.数据库操作接口与类:java.sql包中

       Class()加载驱动

       DriverManager()驱动管理器。作用:得到连接

       Connection(I接口)连接。作用:得到执行SQL语句对象

       Statement(I)SQL执行对象。作用:执行SQL语句,查询时得到结果集,更新时得到影响的行数。

       ResultSet(I)结果集。作用:存储查询时返回数据。

五.使用ODBC代码编写步骤:

       1.配置ODBC数据源

       2.导包

       3. Java代码加载驱动

       4.从驱动管理中得到连接

       5.从连接中得到SQL语句执行对象

       6.执行SQL后的结果存储

       7.关闭连接

 

 

 

 

               

关于JDBC的一些基础的总结!

 

一:JDBC的一些关键的对象

1Connection

 

   Connection对象是我们与数据库进行连接的对象。//(重点掌握)

 

2Statement

 

   Statement对象用于执行不带参数的简单SQL语句。//(重点掌握)

    :Connection conn = null;  

       Statement stmt = null; 

       Class.forName("省略");                                      //加载驱动

       conn = DriverManager.getConnection("省略");                

       DriverManager 管理一组 JDBC 驱动程序的基本服务。           //创建连接

       getConnection()方法是试图建立到给定数据库 URL 的连接

      

 

       stmt = conn.createStatement();  createStatement()方法创建一个 Statement 对象来将 SQL 语句发送到数据库//创建语句对象

       stmt.executeUpdate("delete from wch where 姓名='胡雷'");   //executeUpdate用于 增加 删除 修改 数据库。

       stmt.executeQuery("select * from users");                 //executeQuery 用与 查询 数据库

  

 

3: PreparedStatement

 

   PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句。当SQL语句将运行许多次时,可以使用它。

   使用 Connection.PreparedStatement()来建立PreparedStatement的对象        //(重点掌握)

   

    例:Connection conn = null

        PreparedStatement pstmt = null;

        ResultSet rs = null;

    try {

       Class.forName("省略");                                              //加载驱动

       conn = DriverManager.getConnection("省略");                         //创建连接

       stmt = conn.createStatement();                                      //创建语句对象

       pstmt = conn.prepareStatement("select * from users where uid = ?"); //执行SQL语句

       pstmt.setInt(1, uid);

       rs = pstmt.executeQuery();                                          //得到结果

        if (rs.next()) {

              System.out.print(rs.getInt("uid"));

              System.out.print(rs.getString("username"));

              System.out.print(rs.getString("pwd"));

              System.out.print(rs.getString("uaddress"));

              System.out.print(rs.getString("uclass"));

                System.out.println();

       }

 

4Resultset

   Resultset 装载查询结果。用语SQL行中数据的访问,它是通过一套get方法提供了对这些行中数据的访问。

 

 

二:连接数据库的6个步骤:

    1:加载驱动。(具体代码:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");)。

   

    2:创建连接(URLDriverManager.getConnection(

                   "jdbc:sqlserver://localhost:1433;databasename=数据库名", "sa","123456");)。

 

    3:创建语句对象(Statement.createStatement();

 

    4: 执行SQL语句  (Statement.executeUpdate("delete from wch where 姓名='胡雷'"); 

                    (Statement.executeQuery("select * from users");

    5: 获得结果

 

    6: 关闭连接 (写在finally 要注意先开的后关,后开的先关这个顺序)

 

  1. package org.lgc;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. public class Test {
  8.     public static void updateDemo(){   //方法更新SQL语句    
  9.         try {
  10.             // 1.加载驱动。
  11.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  12.         
  13.             // 2.得到连接。
  14.             Connection conn = DriverManager.getConnection("jdbc:odbc:myDB");
  15.         
  16.             // 3.得到SQL语句执行对象。
  17.             Statement stmt = conn.createStatement();
  18.             // 4.执行SQL语句并得到返回结果。
  19.             int len = stmt
  20.                     .executeUpdate("update stuInfo set stuAddress='襄阳11' where stuNo = 'svse007'");
  21.             System.out.println("影响的行数为:"+len);
  22.             //5.关闭
  23.             stmt.close();
  24.             conn.close();
  25.             
  26.         } catch (ClassNotFoundException e) {   //捕获异常处理
  27.             e.printStackTrace();
  28.         } catch (SQLException e) {    //多重异常处理
  29.             e.printStackTrace();
  30.         }
  31.     }
  32.     
  33.     
  34.     public static void insertDemo(){ //插入方法
  35.         try {
  36.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动
  37.             Connection conn = DriverManager.getConnection("jdbc:odbc:myDB");//获取连接
  38.             Statement stmt = conn.createStatement();//得到SQL语句并进行执行
  39.             String sql = "insert into stuInfo values('svse111',1,'郭襄','女',18,'襄阳')";// 4.执行SQL语句并得到返回结果。
  40.             int len = stmt.executeUpdate(sql);
  41.             System.out.println("影响的行数为:"+len);
  42.             //关闭连接
  43.             stmt.close();
  44.             conn.close();
  45.         } catch (ClassNotFoundException e) {//捕获异常进行异常处理
  46.             e.printStackTrace();
  47.         } catch (SQLException e) {
  48.             e.printStackTrace();
  49.         }
  50.         
  51.     }
  52.     
  53.     public static void selectDemo(){ //查询SQL语句
  54.         try {
  55.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// 1.加载驱动。
  56.             Connection conn = DriverManager.getConnection("jdbc:odbc:myDB");// 2.得到连接。
  57.             Statement stmt = conn.createStatement();// 3.得到SQL语句执行对象。
  58.             String sql = "select * from stuInfo";
  59.             ResultSet rs = stmt.executeQuery(sql);
  60.             //使用while取出rs中的结果
  61.             System.out.println("学号/t班级/t姓名/t性别/t年龄/t座位/t地址/n");
  62.             while(rs.next()){//循环
  63. //              String stuNo = rs.getString(1);//1表示第一列
  64. //              int classID = rs.getInt(2);
  65. //              String stuName = rs.getString(3);
  66. //              String stuSex = rs.getString(4);
  67. //              int stuAge = rs.getInt(5);
  68. //              int stuSeat = rs.getInt(6);
  69. //              String stuAddress = rs.getString(7);
  70.                 
  71.                 String stuNo = rs.getString("stuNo");//使用数据中表的字段名
  72.                 int classID = rs.getInt("classID");
  73.                 String stuName = rs.getString("stuName");
  74.                 String stuSex = rs.getString("stuSex");
  75.                 int stuAge = rs.getInt("stuAge");
  76.                 int stuSeat = rs.getInt("stuSeat");
  77.                 String stuAddress = rs.getString("stuAddress");
  78.                 
  79.                 System.out.println(stuNo+"/t"+classID+"/t"+stuName+"/t"+stuSex+"/t"+stuAge+"/t"+stuSeat+"/t"+stuAddress);
  80.             }
  81.             //关闭连接
  82.             rs.close();
  83.             stmt.close();
  84.             conn.close();
  85.         } catch (ClassNotFoundException e) {  //异常处理
  86.             e.printStackTrace();
  87.         } catch (SQLException e) {
  88.             e.printStackTrace();
  89.         }
  90.         
  91.     }
  92.     public static void main(String[] args) {
  93.         
  94.         //updateDemo();
  95.         //insertDemo();
  96. //执行方法
  97.         selectDemo();
  98.     }
  99. }

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值