场景
最近遇到一些非常老旧的项目,需要jdbc去连接数据库。这个时候就需要如下准备:
1.mysql-connector-java 包
(这个包的版本要与你用的数据库版本保持一致,不然会出现不必要的报错)
2.工具类(配合连接jar包,沟通数据库)
3. 可能会出现切换 mysql-connector-java 版本包,导致的问题,本地可以连接数据库,jar包不行
下载的mysql-connector-java 包 官方地址为
官网地址:https://dev.mysql.com/downloads/connector/j/
具体下载步骤方式可以参考另外一位博客
https://blog.csdn.net/ebb29bbe/article/details/126861047?spm=1001.2014.3001.5506
工具类
DBConn(连接工具类)
学习链接:
(JDBC连接mysql的url的写法和常见属性)
https://blog.csdn.net/hahaha__123hi/article/details/114669933
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConn {
// //本地环境
// private static final String url = "jdbc:mysql://localhost:3306/tsk"; //数据库地址
// private static final String username = ""; //数据库用户名
// private static final String password = ""; //数据库密码、
// private static final String driver = "com.mysql.jdbc.Driver"; //mysql驱动
// private static final Connection conn = null;
//正式环境-(版本为5.1.30-community,所以mysql-connector的版本为5.1.30)
private static final String url = "jdbc:mysql://xx.xxx.xxx.xx:3306/tsk?autoReconnect=true&failOverReadOnly=false&maxReconnects=10"; //数据库地址
private static final String username = ""; //数据库用户名
private static final String password = ""; //数据库密码
private static final String driver = "com.mysql.jdbc.Driver"; //mysql驱动
private static final Connection conn = null;
/**
* 连接数据库
* @return
*/
public static Connection conn() {
Connection conn = null;
try {
Class.forName(driver); //加载数据库驱动
try {
conn = DriverManager.getConnection(url, username, password); //连接数据库
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库链接
* @return
*/
public static void close() {
if(conn != null) {
try {
conn.close(); //关闭数据库链接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
DBUtil(关于数据库表增删改查)
package com.jdbc;
import com.entity.ljpjts;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DBUtil {
private static Connection conn = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
private static final CallableStatement cs = null;
//外部其他类调用该方法开启数据库连接
public static int kqjdbc() {
conn = DBConn.conn();
if(conn!=null){
return 1;
}
return 0;
}
//外部其他类调用该方法关闭数据库连接
public static void gbjdbc() {
DBConn.close();
}
/**
* Insert 新增方法封装
* sqltype
* @param stu 传入参数
*/
public static void Insert(ljpjts stu,String sqltype) {
String sql ="";
if("1".equals(sqltype)){
sql = "INSERT INTO ljpjts (sjly, qudao, ywxt, sblsh,bjbh, qhbm, qhmc, bmbm, bmmc, sxbm, sxmc, yhid, sqrxm, lxrxm, sqsj, bjsj, clrxm, bjjd, cjsj, sjtgbm, createtime) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; //插入sql语句
}
if("2".equals(sqltype)){
sql = "INSERT INTO yjpjts (sjly, qudao, ywxt, sblsh,bjbh, qhbm, qhmc, bmbm, bmmc, sxbm, sxmc, yhid, sqrxm, lxrxm, sqsj, bjsj, clrxm, bjjd, cjsj, sjtgbm, createtime) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; //插入sql语句
}
try {
ps = conn.prepareStatement(sql);
/**
* 调用实体StuInfo类,获取需要插入的各个字段的值
* 注意参数占位的位置
* 通过set方法设置参数的位置
* 通过get方法取参数的值
*/
// ps.setString(1, stu.getId());
ps.setString(1, stu.getSjly());
ps.setString(2, stu.getQudao());
ps.setString(3, stu.getYwxt());
ps.setString(4, stu.getSblsh());
ps.setString(5, stu.getBjbh());
ps.setString(6, stu.getQhbm());
ps.setString(7, stu.getQhmc());
ps.setString(8, stu.getBmbm());
ps.setString(9, stu.getBmmc());
ps.setString(10, stu.getSxbm());
ps.setString(11, stu.getSxmc());
ps.setString(12, stu.getYhid());
ps.setString(13, stu.getSqrxm());
ps.setString(14, stu.getLxrxm());
ps.setString(15, stu.getSqsj());
ps.setString(16, stu.getBjsj());
ps.setString(17, stu.getClrxm());
ps.setString(18, stu.getBjjd());
ps.setString(19, stu.getCjsj());
ps.setString(20, stu.getSjtgbm());
ps.setString(21, stu.getCreatetime());
//excecute是执行增删改的,executeQuery是执行查询的
ps.executeUpdate();
System.out.println("插入成功(* ̄︶ ̄)");
} catch (SQLException e) {
e.printStackTrace();
}finally {
//DBConn.close();
}
}
/**
* sqltype
* Select 查询方法封装
* @param
*/
public static int Select(String sblsh,String bjbh,String bjjd,String sqltype) {
int row =0;
String sql ="";
if("1".equals(sqltype)){
sql = "select count(*) from ljpjts where bjbh='" + bjbh + "' and bjjd='" + bjjd + "'" + "and sblsh='"+sblsh+"'";
}
if("2".equals(sqltype)) {
sql = "select count(*) from yjpjts where bjbh='" + bjbh + "' and bjjd='" + bjjd + "'" + "and sblsh='"+sblsh+"'";
}
try {
ps = conn.prepareStatement(sql);
//excecute是执行增删改的,executeQuery是执行查询的
ResultSet rs = ps.executeQuery();
rs.next();
row = rs.getInt(1);
System.out.println("行数:"+row);
System.out.println("查询成功(* ̄︶ ̄)");
} catch (SQLException e) {
e.printStackTrace();
}finally {
//DBConn.close();
}
return row;
}
}
当出现本地可以连接数据库,jar包运行却连接不了数据库(更神奇的是jar包解压里面明明看得见相关连接包),这个时候就是构建工件出现了问题
(1)删除打包得到的文件(class包)
(2)删除“工件”配置,重新配置,即可