> 文档中心 > jdbc连接数据库的代码和步骤

jdbc连接数据库的代码和步骤


jdbc连接数据库的代码和步骤

学习目标

    • jdbc连接数据库的代码和步骤
      • 1、加载JDBC 驱动程序:
      • 2、提供JDBC连接需要的URL
      • 3、创建数据库的连接
      • 4、创建一个Statement
      • 5、执行SQL语句
      • 6、对数据库中 查询的结果做处理
      • 7、关闭JDBC对象
      • 连接UXDB数据库整个完整的代码:
      • 连接MySQL数据库整个完整的代码:

介于大家使用Mysql的比较多,最下面有UXDB和MySQL两种数据库连接的完整代码

JDBC连接数据库的程序,主要包含7个步骤

1、加载JDBC 驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
可以通过java.lang.Class类的静态方法forName(String className)实现。
示例1:(加载UXDB的驱动类)

// 加载 UXDB的驱动   try{     Class.forName("com.uxsino.uxdb.Driver"); }catch (Exception e){     e.printStackTrace(); }

示例2:(加载MySQL的驱动类)

try{//加载MySql的驱动类Class.forName("com.mysql.jdbc.Driver") ;}catch(ClassNotFoundException e){System.out.println("找不到驱动程序类 ,加载驱动失败!");e.printStackTrace() ;}   

成功加载后,会将Driver类的实例注册到DriverManager类中。

注意:不管加载什么数据库的驱动,可能都得提前导入驱动的jar包
jdbc连接数据库的代码和步骤
如果你会用maven的话,就可以直接镜像下载,就不用再手动导入了。
jdbc连接数据库的代码和步骤

2、提供JDBC连接需要的URL

连接JDBC的 URL定义了连接数据库时的协议、子协议、数据源标识
URL的书写形式:书写形式:协议:子协议:数据源标识

  • 协议:在JDBC中总是以jdbc开始 。
  • 子协议:是桥连接的驱动程序或是数据库管理系统名称。
  • 数据源标识:标记找到数据库来源的地址与连接端口。

示例1:(UXDB的连接URL)

// UXDB的连接URLString url = "jdbc:uxdb://192.71.1.31:5432/uxdb";

示例2:(MySQL的连接URL)

String url = "jdbc:mysql://localhost:3306/mysql" ;

3、创建数据库的连接

(1)要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
获取到的 Connection 对象就代表一个数据库的连接。
(2)使用DriverManager的getConnection(String url , String username ,
String password )方法传入 连接的 数据库的路径、数据库的用户名和
密码来获得。

示例1:(连接UXDB数据库,用户名,密码)

// 连接UXDB数据库String url = "jdbc:uxdb://192.71.1.31:5432/uxdb"; try{Connection conn =   DriverManager.getConnection(url,"uxdb","123456"); }catch(Exception e){System.out.println("数据库连接失败!");e.printStackTrace() ; }   

示例2:(连接MySQL数据库)

     String username = "root" ; String password = "root" ; try{Connection conn =   DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){System.out.println("数据库连接失败!");se.printStackTrace() ; }   

4、创建一个Statement

(1)要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下 3 种类型:

  • 执行静态SQL语句。通常通过Statement实例实现。
  • 执行动态SQL语句。通常通过PreparedStatement实例实现。
  • 执行数据库存储过程。通常通过CallableStatement实例实现。
    具体的实现方式: (这里不管什么数据库基本一致,大同小异)
Statement st = con.createStatement() ;   PreparedStatement ps = con.prepareStatement(sql) ;   CallableStatement cs = con.prepareCall("{CALL demoSp(? , ?)}") ;   

5、执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和 execute

  • ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,
    返回一个结果集(ResultSet)对象。
  • int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
    DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
  • execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
    -(这里不管什么数据库基本一致,大同小异)
 // 这里的st 就是上面 第4步 中,你获取的Statement实例    ResultSet rs = st.executeQuery("SELECT * FROM ...") ;int rows = st.executeUpdate("INSERT INTO ...") ;boolean flag = st.execute(String sql) ;   

6、对数据库中 查询的结果做处理

两种情况:
(1)执行更新返回的是本次操作影响到的记录数。
(2)执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据

while(rs.next()){  String name = rs.getString("name") ;    String password = rs.getString(1) ; // 此方法比较高效     }   

rs.getString(1)的意思是取表中第一列的数据(列是从左到右编号的,并且从列1开始)

7、关闭JDBC对象

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和连接顺序刚好相反
(1)关闭记录集
(2)关闭声明
(3)关闭连接对象

 if(rs != null){   // 关闭结果集 try{ rs.close() ;    }catch(SQLException e){ e.printStackTrace() ;    }      }      if(st != null){   // 关闭声明    try{ stmt.close() ;    }catch(SQLException e){ e.printStackTrace() ;    }      }      if(conn != null){  // 关闭连接对象     try{ conn.close() ;     }catch(SQLException e){ e.printStackTrace() ;     }      } 

连接UXDB数据库整个完整的代码:

package com.song.jdbc;import java.sql.*;public class ConnTest {    public static void main(String[] args) { Connection connection = getConn(); String sql = "select * from student"; PreparedStatement statement; statement = null; ResultSet resultSet; resultSet = null; try {//     statement = connection.createStatement();//     resultSet = statement.executeQuery(sql);     //4、创建一个Statement     PreparedStatement statement1 = connection.prepareStatement(sql);     //5、执行SQL语句     resultSet = statement1.executeQuery();     System.out.println("======");     //6、对数据库中 查询的结果做处理     while (resultSet.next()){  System.out.println("===22222====");  System.out.println(resultSet.getString(1));  System.out.println("\n");     } }catch (Exception e){     e.printStackTrace(); }finally {     //7、关闭JDBC对象     if (resultSet != null){  try {      resultSet.close();  } catch (SQLException e) {      e.printStackTrace();  }     }   if (statement != null){  try {      statement.close();  } catch (SQLException e) {      e.printStackTrace();  }     }   if (connection != null){  try {      connection.close();  } catch (SQLException e) {      e.printStackTrace();  }     } }    }    private static Connection getConn(){ Connection connection; connection = null; try{     //1、加载JDBC 驱动程序     Class.forName("com.uxsino.uxdb.Driver");     //2、提供JDBC连接需要的URL     String url = "jdbc:uxdb://192.71.1.31:5432/uxdb";     try {  //3、创建数据库的连接  return DriverManager.getConnection(url,"uxdb","123123");     }catch (Exception e){  e.printStackTrace();     } }catch (Exception e){     e.printStackTrace(); } return connection;    }}

连接MySQL数据库整个完整的代码:

package sqldemo;  import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;  public class main {   public static void main(String[] args) { //声明Connection对象  Connection con;  //驱动程序名 String driver = "com.mysql.jdbc.Driver";  //URL指向要访问的数据库名mydata  String url = "jdbc:mysql://localhost:3306/sqltestdb";  //MySQL配置时的用户名  String user = "root";  //MySQL配置时的密码  String password = "123456";  //遍历查询结果集  try {      //加载驱动程序      Class.forName(driver);      //1.getConnection()方法,连接MySQL数据库!!      con = DriverManager.getConnection(url,user,password);      if(!con.isClosed())      System.out.println("Succeeded connecting to the Database!");      //2.创建statement类对象,用来执行SQL语句!!      Statement statement = con.createStatement();      //要执行的SQL语句      String sql = "select * from emp";      //3.ResultSet类,用来存放获取的结果集!!      ResultSet rs = statement.executeQuery(sql);      System.out.println("-----------------");      System.out.println("执行结果如下所示:"); System.out.println("-----------------"); System.out.println("姓名" + "\t" + "职称"); System.out.println("-----------------"); String job = null;      String id = null;      while(rs.next()){   //获取stuname这列数据   job = rs.getString("job");   //获取stuid这列数据   id = rs.getString("ename");    //输出结果   System.out.println(id + "\t" + job);      }     rs.close();      con.close();  } catch(ClassNotFoundException e) {      //数据库驱动类异常处理     System.out.println("Sorry,can`t find the Driver!");e.printStackTrace();  } catch(SQLException e) {      //数据库连接失败异常处理      e.printStackTrace();}catch (Exception e) {      // TODO: handle exception      e.printStackTrace(); }finally{      System.out.println("数据库数据成功获取!!");  }     } }

清水丽人化妆品