黑马程序员技术交流社区
标题:
java数据库连接总结
[打印本页]
作者:
苹果核的梦想
时间:
2015-11-19 15:00
标题:
java数据库连接总结
JAVA 数据库连接四大件:driver、url、user、password
连接过程:
String driver = “com.mysql.jdbc.Driver”;
String url = “jdbc:mysql://127.0.0.1:3306/目标数据库名”;
String user = “数据库登录名”;
String password = “数据库密码”;
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,user,password);
DriverManager内部是一个驱动列表,可以同时注册很多驱动(中间用冒号分割)
注册驱动三种方法:
1)DriverManager.registerDriver(new com,mysql.jdbc.Driver());
* 会造成代码依赖:如果MySQL的JAR包不存在代码就不能通过编译
* 会在DriverManager中产生两个相同的驱动实例
2)System.setProperty("jdbc.drivers","com,mysql.jdbc.Driver");
* 通过属性赋值方式注册驱动,很少使用
3)Class.forName("com,mysql.jdbc.Driver");
* forName()方法把类装载到Java虚拟机中,不一定创建实例。类装载到Java虚拟机中后,调用类的静态代码块(类的初始化),将其注册到DriverManager中
* 推荐使用这种方式
关闭数据库连接要注意关闭顺序与获取顺序相反
/**
* 关闭连接
*/
public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
pstmt = null;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
复制代码
查询过程(注:以下方法都没关闭连接):
1)Statement查询
Statement stmt = conn.createStatement();
String sql = "select * from 表名";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString("列名") + "\t" + rs.getString("列名"));
}
复制代码
2)preparedStatement查询
PreparedStatement pstmt = null;
String sql = "select * from cars";
String sql_1 = "insert into cars values (?,?,?,? )";
/*
* 查询车辆信息
*/
pstmt = conn.prepareStatement(sql);
pstmt.executeQuery(sql);
/*
* 插入车辆信息
*/
pstmt = conn.prepareStatement(sql_1);
pstmt.setString(1, "蒙B123456");
pstmt.setString(2, "张三");
pstmt.setString(3, "灰色");
pstmt.setInt(4, 12000);
pstmt.executeUpdate();
Preparedstatement查询时pstmt.executeUpdate();执行语句中不能有sql参数,否则会有sql语句为空的Exception
复制代码
作者:
wome789
时间:
2015-11-19 18:50
学习了
作者:
唯我独赞mo
时间:
2015-11-19 22:03
你这只是mysql的,oracle还是有点区别的
作者:
苹果核的梦想
时间:
2015-11-19 22:40
唯我独赞mo 发表于 2015-11-19 22:03
你这只是mysql的,oracle还是有点区别的
对啊,我目前只学了MySQL,以后会学oracle,不过有了hibernate神器的话,嘿嘿。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2