对于Java连接数据库:
在这里面我走了很多弯路,主要有连接时驱动的加载,和我主要的sql连接
那么下面就说说这两点最好的解决方法
首先需要连接:
网上大家也都推荐使用一个工具类,也就是JDBCUtils类的类,这是一个自己写的类,但是应为在连接过程中连接方式都是一样的,所以网上也有很多写好的工具类这里网页发出下我使用的:
```java
public class JDBCUtils {
public static Connection getConnection() throws Exception {
// 1.读取配置文件中的4个基本信息
InputStream is = JDBCUtils.class.getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
// 2.加载驱动
Class.forName(driverClass);
// 3.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
/**
* @Description 关闭连接和Statement的操作
*/
public static void closeResource(Connection conn,Statement ps){
try {
if(ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
*
* @Description 关闭资源操作
*/
public static void closeResource(Connection conn,Statement ps,ResultSet rs){
try {
if(ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
对于上面注意一点,就是是使用的配置文件"jdbc.properties",是写在一个file中的文件,这个是为了防止硬编码的形成,就像MySQL中的mysql.mini文件一样。JDBCUtils.class.getResourceAsStream(“jdbc.properties”);就是在加载配置文件。
配置文件里面就就是properties形式存在的文件,以键值对形式存在,里面主要就四项,也是最基本的配置文件,其中有驱动Driver,连接的URL,和登录的账号和密码。
就像user=root以键值对形式存在即可。
写好连接的工具类后就可以在自己的数据库连接过程中使用了,因为工具类中的方法都是静态方法,所以需要用类名直接调用即可。
如下就是稳定一个写的test的一个测试中的使用。
```handlebars
public class PreparedStatementUpdataTest {
@Test
public void testCommonUpdate(){
String sql = "delete from customers where id = ?";
updata(sql,20);
System.out.println("修改成功!");
}
//通用的增删改操作:
public void updata(String sql,Object...args){
Connection conn = null;
PreparedStatement ps = null;
try {
//1.获取数据库的连接
conn = JDBCUtils.getConnection();
System.out.println("连接数据库成功!"+conn);
//2.预编译sql语句
ps = conn.prepareStatement(sql);
//3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
//4.执行
ps.execute();
} catch (Exception e) {
// TODO: handle exception
}finally {
//5.关闭资源
JDBCUtils.closeResource(conn, ps);
}
}
}
对于里面还有很多的细节问题,我后面再分析,发出来!