美文网首页程序员
如何用java创建一个jdbc程序

如何用java创建一个jdbc程序

作者: Java红茶 | 来源:发表于2017-11-04 17:36 被阅读0次

    第一个jdbc程序

    JDBC简介

    Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。
    JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。
    使用JDBC编写的程序能够自动地将SQL语句传送给相应的数据库管理系统。
    JDBC扩展了Java的功能,由于Java语言本身的特点,使得JDBC具有简单、健壮、安全、可移植、获取方便等优势。
    JDBC API

    Paste_Image.png

    JDBC结构

    1.JDBC API是Java开发工具包(JDK)的组成部份:

    JDBC驱动程序管理器
    JDBC驱动程序测试工具包
    JDBC-ODBC桥
    2.JDBC驱动程序管理器是JDBC体系结构的支柱,其主要作用是把Java应用程序连接到正确的JDBC驱动程序上。
    3.JDBC驱动程序测试工具包为JDBC驱动程序的运行提供一定的可信度,只有通过JDBC驱动程序测试包的驱动程序才被认为是符合JDBC标准的。

    4.JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。其目标是为方便实现访问某些不常见的DBMS,它的实现为JDBC的快速发展提供了一条途径。

    分析JDBC开发步骤

    使用JDBC访问数据库的基本步骤一般如下:

    加载JDBC驱动程序
    创建数据库连接
    创建Statement对象
    执行SQL语句
    处理返回结果
    关闭创建的对象

    开发第一个JDBC程序

    package com.wfu.ch09;
    **java交流群:669823128**
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Test1 {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.jdbc.Driver");//里面的名字一定不要写错,这个也是导入的
                //forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
                Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/k-user","root","123456");//试图建立到给定数据库 URL 的连接。
                Statement stmt=conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。
    
    //          String insertsql="insert into k_user(userno,username,pwd) values('1002','张三','123')";
    //          int x=stmt.executeUpdate(insertsql); //executeUpdate 返回一个int 型的数据 括号里面是一个字符串数据类型,详细内容看文档
    
                //(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数
                //(2) 对于不返回任何内容的 SQL 语句,返回 0
    
    //          if(x>0){
    //              System.out.println("插入成功!");
    //          }
    //          String updateSql="update k_user set pwd='123456' where userno='1002'";
    //          int x=stmt.executeUpdate(updateSql);
    //          if(x>0){
    //              System.out.println("更新成功!");
    //          }
                String deleteSql="delete from k_user where userno='1002'";
                int x=stmt.executeUpdate(deleteSql);
                if(x>0){
                    System.out.println("删除成功!");
                }
                String sql="select * from k_user";
                ResultSet rs=stmt.executeQuery(sql);
                while(rs.next()){
                    for(int i=1;i<=13;i++){
                        System.out.print(rs.getString(i)+"  ");
                    }
                    System.out.println();
                }
                rs.close();
                stmt.close();
                conn.close();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }               
        }
    }
    
    package com.wfu.ch09;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Test2 {
        public static void main(String[] args) {
            try {
                // step1:加载JDBC驱动程序
                Class.forName("com.mysql.jdbc.Driver");
                // step2:建立数据库的连接
                Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/stock11", "root", "123");
    //          // step3:创建Statement对象
                Statement st = conn.createStatement();
                //step4:执行SQL语句
                String selectSql="select * from k_user";
                //step5:处理结果集
                ResultSet rs=st.executeQuery(selectSql);
                while(rs.next()){
                    for(int i=1;i<=13;i++){
                        System.out.print(rs.getString(i)+"  ");
                    }
                    System.out.println();
    //              String x=rs.getString("hometown");
    //              System.out.println(x);
                }
                //step6:关闭创建的对象
                //关闭结果集
                rs.close();
                //关闭statement对象
                st.close();
                //关闭连接
                conn.close();
    
    
                // step4: 执行SQL语句
    ////            String insertSql = "insert into k_user(userno,username,pwd) values('1001','tom','123')";
    //          int x = st.executeUpdate(insertSql);
    //          if(x>0){
    //              System.out.println("插入成功!");
    //          }
    //          String updateSql="update k_user set pwd='123456' where userno='1001'";
    //          int x=st.executeUpdate(updateSql);
    //          if(x>0){   **java交流群:669823128**
    //              System.out.println("更新成功!");
    //          }
    //          String deleteSql="delete from k_user where userno='1001'";
    //          int x=st.executeUpdate(deleteSql);
    //          if(x>0){
    //              System.out.println("删除成功!");
    //          }
                //
    
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }
    

    各个语句说明

    加载JDBC驱动程序

    加载驱动程序的方法:

    Class.forName("DriverName")
    

    其中DriverName是要加载的JDBC驱动程序名称。驱动程序名称根据数据库厂商提供的JDBC驱动程序的种类来确定。

    加载MySQL数据库驱动程序的方法为:

    Class.forName("com.mysql.jdbc.Driver");
    

    加载Oracle数据库驱动程序的方法为:
    创建数据库连接-1

    DriverManager类是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。

    DriverManager的常用方法:

    Paste_Image.png

    使用DriverManager类的getConnection()创建一个数据库连接:

    Connection conn = DriverManager.getConnection(String url,String user,String password);
    

    创建数据库连接-2

    URL提供了一种标识数据库位置的方法,可以使相应的驱动程序能够识别该数据库并与它建立连接。

    JDBC URL由三个部分组成:

    jdbc : < subprotocol> : < subname>
    

    可以根据子协议的改变而变化。
    是子协议,指数据库连接的方式。

    创建数据库连接-3

    对于MySQL驱动的连结的URL是:

    jdbc:mysql://serverName:port/instance
    

    mysql为子协议名称
    serverName为MySQL数据库服务器名称,可以是一个域名,也可以是IP地址
    port为MySQL数据库的端口号,默认为3306
    instance是数据库的实例名
    示例:

    Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/haier", "root", "123");
    

    创建SQL 语句

    创建完连接之后,可以通过此连接向目标数据库发送SQL语句。在发送SQL语句之前,须创建一个Statement类的对象,该对象负责将SQL语句发送给数据库。如果SQL语句运行后产生结果集,Statement对象会将结果集封装成ResultSet对象并返回。

    通过调用Connection接口的createStatement方法来创建Statement对象,如:

    Statement smt = conn.createStatement();
    

    执行SQL语句

    在Statement接口中有两个非常重要的方法,分别是executeUpdate方法和executeQuery方法。使用executeUpdate方法可以执行插入、修改和删除等操作的SQL语句, executeUpdate方法的返回值是一个int类型数值,表示更新数据表的行数。使用 executeQuery方法可以执行数据库查询操作的SQL语句,他的返回值是实现ResultSet接口的对象,在其中保存从数据库中查询出来的数据。

    例如:

    int row=stmt.executeUpdate(sql);
    

    写到这,对于sql命令的展开没有进行详细的说明,在上面的例子中的代码中有很多注释,都有了详细的说明,对于如何写一个jdbc 程序也有了步骤说明,而且都是一个接着一个的,包括声明的对象类型,还有一个注意的地方就是在最后关闭程序的时候,也是有顺序的,对于有依赖关系的语句都是依次关闭的,在程序的代码中也是有说明的。
    java交流群:669823128

    相关文章

      网友评论

        本文标题:如何用java创建一个jdbc程序

        本文链接:https://www.haomeiwen.com/subject/nyfqmxtx.html