JDBC

1.java数据库操作
如何通过JDBC访问数据库?
说明:用于在java程序中实现数据库操作功能,提供了执行SQL语句、访问各种数据库的方法,并为数据库提供了统一的接口。

具体步骤:1)加载JDBC驱动器(位于客户端和服务器端之间,是一种中间桥梁,将数据库驱动加载到classpath中,
在基于javaEE的web应用的开发过程,常常要把目标数据库产品的JDBC驱动复制到web-INF/lib下。
2)加载JDBC驱动,并将其注册到DriveManager中。一般用反射
class.forName(String driveName).
3)建立数据库连接,取得Connection对象。一般通过DriveManager.getConnection(url,username,passwd)方法实现,
其中,url表示连接数据库的字符串,username连接数据库的用户名,passwd表示连接的数据库的密码。
4)建立Statement对象或PreparedStatement对象。
5)执行SQL语句。
6)访问结果集ResultSet对象。
7)依旧将ResultSet/Statement/PreparedStatement/
Connection对象关闭,释放掉所有的资源,例如rs.close()/
con.close()等。为什么要这么做呢?原因在于JDBC驱动底层通常
都是通过网络IO实现SQL命令与数据传输的。

用MySQL连接数据库:
Class.forName(“org.gjt.mm.mysql.Driver”);//用反射加载驱动
String url=“jdbc:mysql://localhost/sample?user=sa password=sa”;//连接数据库的字符串、用户名、密码
Connection con=DriverManager.getConnection(url);//建立数据库连接,取得Connection对象

import java.sql.*;
public class TestMysqlConnection{
    public static void main(String[] args) {
        Connection conn=null;
        Statement stmt=null;
        Resultset rs=null;

        //导入数据库的过程,操作文件菜单
        try{
            class.forName("com.mysql.jdbc.Driver");    
            //这里是干什么的?        
            conn=DriverManager.getConnection("jdbc:mysql://localhost/mydata?user="root&password=root&password=root");
                //连接已经存在的数据库
            stmt=conn.creatStatement();
            //获得数据
            rs=stmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getString("deptno"));
                //访问数据库中的表
            }
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        catch(Exception ex) {
            System.out.println("sqlException:"+ex.getMessage());
            System.out.println("sqlState:"+ex.getSqlState());
            System.out.println("VendorError:"+ex.getErrorCode());
        }finally{
            try{
                 if (rs !=null) {
                     rs.close();
                     rs.null;
                 }
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

再看一个例子:

1.导入JDBC驱动,

即首先导入.jar文件(

a. 选中建立好的工程Test,点击右键,选择Properties,

b. 选择Java Build Path 在右边选择Libraries,点击Add External JARs...

c. 导入正确的驱动连接的包

d、选择Order and Export,勾选上我们刚刚导入进来的包,最后点击OK就可以了。

然后建立数据库、库下建表、插入值

2.java程序访问数据库

package com.shiyanlou;

import java.sql.*;

public class JdbcTest {
   // JDBC 驱动器名称 和数据库地址
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   //数据库的名称为 EXAMPLE
   static final String DB_URL = "jdbc:mysql://localhost/EXAMPLE";

   //  数据库用户和密码
   static final String USER = "root";

   static final String PASS = "";

   public static void main(String[] args) {
       Connection conn = null;
       Statement stmt = null;
       try{
           //注册JDBC 驱动程序
           Class.forName("com.mysql.jdbc.Driver");

           //打开连接
           System.out.println("Connecting to database...");
           conn = DriverManager.getConnection(DB_URL,USER,PASS);

           //执行查询
           System.out.println("Creating statement...");
           stmt = conn.createStatement();
           String sql;
           sql = "SELECT id, name, age FROM Students";
           ResultSet rs = stmt.executeQuery(sql);

           //得到和处理结果集
           while(rs.next()){
               //检索
               int id  = rs.getInt("id");
               int age = rs.getInt("age");
               String name = rs.getString("name");

               //显示
               System.out.print("ID: " + id);
               System.out.print(", Age: " + age);
               System.out.print(", Name: " + name);
               System.out.println();
           }
           //清理环境
           rs.close();
           stmt.close();
           conn.close();
       }catch(SQLException se){
           // JDBC 操作错误
           se.printStackTrace();
       }catch(Exception e){
           // Class.forName 错误
           e.printStackTrace();
       }finally{
           //这里一般用来关闭资源的
           try{
               if(stmt!=null)
                   stmt.close();
           }catch(SQLException se2){
           }
           try{
               if(conn!=null)
                   conn.close();
           }catch(SQLException se){
               se.printStackTrace();
           }
       }
       System.out.println("Goodbye!");
   }
}
成年人的世界没有那么多的童话,也没有那么多的逆袭。
原文地址:https://www.cnblogs.com/shijinglu2018/p/8810548.html