看狂神说的Mysql,封装了jdbc的工具类。亲测可用,可以作为参考哈!
1、这里需要一个配置文件:db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=123456
2、JdbcUtils工具类内容
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JdbcUtils {
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
static{
try {
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);//到目前为止,db.properties文件中的内容就被读出到properties对象中了
//获得配置文件中的信息
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
//1、驱动只需要加载一次
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,username,password);
}
//释放连接资源
public static void release(Connection conn,Statement st,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、测试工具类
这里只是写了(“增”和“查”)的程序,在增程序的基础上改变程序中字符串变量sql,即可实现“删改”。执行sql语句,“增删改”使用executeUpdate()方法,“查”使用executeQuery()方法。
//增
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestInsert {
public static void main(String[] args) {
Connection conn= null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();//获取到一个连接
st = conn.createStatement();//获得SQL的执行对象
String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`)"+
"VALUES(5,'kuangshen','123456','56677889@qq.com','2020-01-01')";
int cnt = st.executeUpdate(sql);//返回受影响行数
if(cnt>0){
System.out.println("插入成功!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.release(conn, st, rs);
}
}
}
//查
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestSelect {
public static void main(String[] args) {
Connection conn= null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
st = conn.createStatement();//获得SQL的执行对象
//SQL
String sql = "select * from users where id = 1";
//查询,也可以使用execute()方法,但是效率低
rs = st.executeQuery(sql);//查询完毕会返回一个结果集
while(rs.next()){
//输出查询到的每条记录的名字,这里其实也就一条
System.out.println(rs.getString("NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.release(conn, st, rs);
}
}
}
4、测试记录如下
(1)增
//插入操作
String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`)"+
"VALUES(5,'kuangshen','123456','56677889@qq.com','2020-01-01')";
插入结果:在原来四条记录的基础上增加了第五条记录
(2)删
//删除操作
String sql = "DELETE FROM users WHERE id = 5";
删除结果:删除了上边刚插入的第五条记录
(3)改
//改动操作
String sql = "UPDATE users SET `NAME`='kuangshen',`email`='22334455@qq.com' WHERE id =1";
改动结果:在上表的基础上,改动了id=1时记录的名字和邮箱
(4)查
//SQL
String sql = "select * from users where id = 1";
//查询,也可以使用execute()方法,但是效率低
rs = st.executeQuery(sql);//查询完毕会返回一个结果集
查询结果:这里只查到一条记录
console输出:
kuangshen