java中用JDBC进行mysql数据库的连接 步骤 +实例

时间:2022-12-16 13:04:30

①加载并注册数据库驱动

   DriverManager.registerDriver(Driver driver);   //这一步主要是告知JVM使用的是哪一个数据库的驱动

   上面的那一种写法会出数据库驱动被注册两次,这是因为Driver类的源码中,已经在静态代码块中完成了数据库驱动的注册

    所有就有了下面这一种写法  Class.forName("com.mysql.jdbc.Driver");

②获得连接

  Connection con = DriverManager.getConnection(String url,String user,String pass);   //   使用JDBC中的类,完成对

  MySQL数据库的连接

③获得语句执行平台    

     Statement stmt = con.createStatement();  //通过连接对象获取对sql语句的执行者对象

     这里有一个改进

     由于Statement对象每次执行SQL语句时,都会对其进行编译,当相同的SQL语句执行多次时,Statement对象就会使数据库频繁编译相同的sql语句,从而降低数据库的访问效率,为解决这个问题,Statement提供了一个子类PreparedStatement,当相同的sql语句再次执行时,数据库只需使用缓冲区中的数据,而不需要对sql语句再次编译,从而有效提高数据的访问效率。

     下面实例二进行了演示

④执行sql语句

   这里要先写一个sql语句  如:String sql= "SELECT * FROM 表名"

    ResultSet rs = stmt.exexute(sql);  // 使用执行者对象,向数据库执行sql语句,获取到数据库的执行后的结果 

⑤处理结果

   也就是ResultSet中提供的一些方法

⑥释放资源

      一堆close()

实例一:

//我内部建立个sort数据库

package cn.itcast.com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
public class JDBCDemo1 {
public static void main(String[] args) throws Exception {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
String url = "jdbc:mysql://localhost:3306/mybase";
String username = "*****";
String password = "**********";
Connection con =  (Connection) DriverManager.getConnection(url,username,password);
//3.获取执行SQL语句对象
Statement stat = con.createStatement();
//拼写查询的sql
String sql = "SELECT * FROM sort";
//4.调用执行者对象方法,执行sql语句获取结果集
//ResultSet executeQuery(String sql) 执行sql语句中的select
//返回值ResultSet 接口的实现类对象,实现类在mysql驱动中
ResultSet rs = stat.executeQuery(sql);
//5.处理结果集
//ResultSet接口方法boolean next() 返回true ,有结果集,返回false没有结果集
while(rs.next()) {
//获取每列数据,使用是ResultSet 接口的方法getXX
System.out.println(rs.getInt("sid")+"   "+rs.getString("sname")+"   "
                            +rs.getDouble("sprice")+"     "+rs.getString("sdesc"));
}
rs.close();
stat.close();
con.close();
}

}

结果:

1   家电   2000.0     优惠的促销
2   家具   8000.0     家具价格上调,原材料涨价
3   儿童玩具   300.0     赚家长钱
4   生鲜   500.99     生鲜商品
5   服装   24000.0     换季销售
6   洗涤   50.0     洗发水促销

7   汽车用品   50000.0     疯狂涨价

实例二:

工具类:

package cn.itcast.com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import  java.sql.Connection;
import com.mysql.jdbc.PreparedStatement;
public class JDBCUtils {
private JDBCUtils() {}
/*
* 定义静态方法,返回数据库的连接对象
*/
private static Connection con;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mybase";
String username = "*******";
String password = "************";
con =   DriverManager.getConnection(url,username,password);
}catch(Exception e) {
throw new RuntimeException(e+"数据库连接失败");
}
}
public static void close(Connection con,Statement stat ) {
    if(con!=null) {
    try {
    stat.close();
    }catch(SQLException e) {}
    }
    if(stat!=null) {
    try {
    stat.close();
    }catch(SQLException e) {}
    }
    }
/*
* 定义静态方法,返回数据库的连接对象
*/
    public static Connection getConnection() {
    return con;
}
    public static void close(Connection con2,Statement stat ,ResultSet rs) {
    if(rs!=null) {
    try {
    stat.close();
    }catch(SQLException e) {}
    }
    if(con2!=null) {
    try {
    stat.close();
    }catch(SQLException e) {}
    }
    if(stat!=null) {
    try {
    stat.close();
    }catch(SQLException e) {}
    }
    }

}

测试类:

package cn.itcast.com;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
public class TestJDBCUtils {
public static void main(String[] args) throws Exception {
Connection con = JDBCUtils.getConnection();
PreparedStatement pst = con.prepareStatement("SELECT sname FROM sort");
ResultSet rs = pst.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("sname"));
}
JDBCUtils.close(con,pst,rs);

}
}