简单说明:
jdbc(Java Data Base Connectivity, java数据库连接)是一种用于执行sql语句的java API
mysql按照java提供的jdbc接口开发了相关的连接驱动(mysql-connector-java.jar, 一大堆java类), 通过使用这个jar包中的类,
可以通过java来操作mysql数据库;
注:需要导入mysql-connector-java.jar (资源在网上下载)
基本的连接操作:
import java.sql.Connection;
import java.sql.DriverManager;
public class Conn {
public static Connection getConnection() throws Exception{
// 1.定义驱动程序名
String driver = "com.mysql.jdbc.Driver";
// 2.定义连接串数据库名
String url = "jdbc:mysql://localhost/databaseName?characterEncoding=GBK"; //注:databaseName是连接的数据库名称;
// 3.加载驱动
Class.forName(driver); // Class.forName(driver)为加载驱动 可以理解为 new driver();
// 4.创建连接
Connection conn = DriverManager.getConnection(url, "?", "?");
//第一个?填入需要连接的mysql用户名,一般默认为root, 第二个?填入连接mysql用户的密码;
return conn;
}
}
上面的连接mysql的方法不够高效: 原因在于 每次获取connection 都需要创建String driver, String url, 加载驱动; 通过改成静态成员只用创建一次即可:
drivermanager.getconnection(); 获取连接结果之后与当前线程进行绑定,防止重复获取数据库连接;
代码如下:
import java.sql.*;
public final class dbUtils {
private dbUtils(){}; // 私有构造成员;
private static String url = "jdbc:mysql://localhost/databaseName?characterEncoding=GBK"; // databaseName数据库名称;
private static String driver = "com.mysql.jdbc.Driver";
//线程副本
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
static {
try{
Class.forName(driver);
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConn() throws Exception{
Connection conn = threadLocal.get();
if(conn == null){
conn = DriverManager.getConnection(url, "root", "*****"); // ****** 输入对应密码
//将链接与当前线程通过线程副本建立绑定
threadLocal.set(conn);
}
return conn;
}
public static PreparedStatement getPstm(String sql) throws Exception{
return getConn().prepareStatement(sql);
}
// 在程序结束时需要解除线程副本的绑定;
public static void close(){
Connection conn = threadLocal.get();
if(conn != null){
try{
threadLocal.set(null);
conn.close();
// System.out.println("连接关闭");
}catch(Exception e){
e.printStackTrace();
}
}
}
}
增删改查操作 可以参考: