首页 > 代码库 > JDBC初体验
JDBC初体验
DriverManager:用于注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver()) 这个会导致注册多次,而且强烈以来数据库驱动jar,所以不建议使用
改成Class.forName("com.mysql.jdbc.Driver");采用了反射机制,解耦合,加载驱动类
Oracle数据库为jdbc:oracle:thin:@localhost:1521:sid
connection:表示与数据库创建的连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","root","root")
协议:子协议/IP:端口号/数据库
还有利用参数传值进行连接 getConnection("jdbc:mysql://localhost:3306/数据库名?user=root&passwors=root")
statement:操作数据库sql语句的对象,为了安全,一般采用其子类preparestatement
Statement stmt=conn.creatStatement();
这个对象有三个主要方法:a. ResuleSet executeQuery(string sql) b.int executeUpdate(string sql) c.boolean execute(string sql)
resultset:结果集或一张虚拟表(两个作用:封装结果集getObject()跟提供可移动游标的方法,例如next()跟previous())
ResuleSet rs=stmt.executeQuery("sql语句")
处理结果
while(rs.next){
...
}
关闭资源: rs stmt conn都要关闭,注意要进行try catch。
DBUtil数据库连接工具类:
public class DBUtils {
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
//此对象是用于加载properties文件数据的
ResourceBundle rb = ResourceBundle.getBundle("dbinfo");
driverClass = rb.getString("driverClass");
url = rb.getString("url");
username = rb.getString("username");
password = rb.getString("password");
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//得到连接的方法
public static Connection getConnection() throws Exception{
return DriverManager.getConnection(url, username, password);
}
//关闭资源的方法
public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
//关闭资源
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
}
数据库CRUD操作类:public void testInsert(){
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = DBUtils.getConnection();
stmt = conn.prepareStatement("INSERT INTO users VALUES(?,?,?,?,?)");
stmt.setInt(1, 5);
stmt.setString(2, "tom");
stmt.setString(3, "333");
stmt.setString(4, "tom@163.com");
//stmt.setDate(5, new java.sql.Date(System.currentTimeMillis()));
stmt.setString(5, "2015-09-11");
int i = stmt.executeUpdate();
if(i>0){
System.out.println("success");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
DBUtils.closeAll(null, stmt, conn);
}
}
JDBC初体验