使用类加载器:
方法介绍:
void load(InputStream inStream)
从输入流中读取属性列表(键和元素对)。
InputStream getResourceAsStream(String name)
查找具有给定名称的资源。
要说明的是,如果文件放在src下面,则用/properties,如果放在该类的包下,则用properties。
/路径在java项目中位置处于src下,在web中处于WEB-INF/class下。所以是可以同时满足java项目和web项目的
代码:
package com.dbhelp;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
public class DBUtils {
private static Connection conn = null;
private static String url;
private static String name;
private static String password;
private static String driver;
static {
try {
Properties prop = new Properties();
Class clazz = DBUtils.class;
InputStream in = clazz.getResourceAsStream("/db.properties");
prop.load(in);
url = prop.getProperty("url");
name = prop.getProperty("name");
password = prop.getProperty("password");
driver = prop.getProperty("driver");
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
conn = DriverManager.getConnection(url,name,password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
JDBC批处理:
这里就举例PreparedStatement的批处理方式
代码:
package com.jdbc;
import java.sql.*;
import com.dbhelp.DBUtils;
public class PreparedStatementBatchTest {
private static Connection conn = null;
private static PreparedStatement psttm = null;
public static void main(String[] args) {
conn = DBUtils.getConnection();
String sql = "insert into person(id,name,age) values(?,?,?)";
try {
psttm = conn.prepareStatement(sql);
for(int i = 1; i <= 3; i++) {
psttm.setInt(1, i+4);
psttm.setString(2, "testname"+i);
psttm.setInt(3, 20+i);
psttm.addBatch();
}
psttm.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
DBUtils.close(conn, psttm);
}
}