jdbc 连接数据库 :
1 连接数据库
第一步 先获得数据库驱动
Class.forName("oracle.jdbc.OracleDrive"); //oracle的连接驱动
Class.forName("com.mysql.jdbc.Driver"); //mySql 的连接驱动
第二步: 获得数据库连接对象
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //oracle
String url = "jdbc:mysql://localhost:3306/库名 //mySql
String userName="root";
String passWord = "root";
Connection conn = DriverManager.getConnnection(url,userName,passWord);
第三步 获得 Statement对象 并且执行Sql 语句
Statement sts = conn.createStatement();
ResultSet rs = sts.executeQuery("select date,id from stu");
//迭代查询
while(rs.next()){
System.out.ptintln(rs.getDate(1));
System.out.ptintln(rs.getInt(2));
..........................................................;
}
conn.setAutoCommit(false);//默认是自动提交
第四步 关闭数据库连接
关闭结果集
if(rs!=null){
try
{
rs.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
}
关闭声明
if(sts!=null){
try{
sts.close();
} cath(SQLException e
){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}cath{
e.printStackTrace();
}
}
Statement 和PreparedStatement 区别两个接口的区别
Statement 是PreparedStatement的父类
SQL 语句被预编译并存储在 PreparedStatement
对象中
Statement 不支持预编译 而PreparedStatement 支持这就导致了PreparedStatement的效率比前者高,可读性也好
例如:PreparedStatement 可以使用占位符?
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00) pstmt.setInt(2, 110592);
ResultSet rs = pstmt.executeUpdate();
如果 Statement 中sql 条件过会导致语句长并且不便于读写,严重影响开发效率,也容易将sql语句写错从而造成严重影响
Statement sts = conn.createStatement(); sql 主要是靠拼接 容易出问题
ResultSet rs = sts.executeQuery("select date,id from stu");
两者总结:如果单纯的只有一个简单的查询可以选择用Statement ,前提是你对sql熟练不易写错,因为PreparedStatement 比Statement 的开销大小。但是如果你需要进行复杂而且重复量极高的sql语句,那最好是选择PreparedStatement,因为它的预编译能力是 前者所没有的,这样大大提高了执行的效率,尤其是在批量删除,更新,插入时,效果越加明显,并且也不会因为sql拼接的原因出问题 批量处理 addBath().
强力推荐使用 PreparedStatement!!!
Hibernate 连接数据库
1 读取配置文件 hibernate.cfg.xml文件 设置Hibernate 配置信息
Configuration config = new Configuration().getConfig();
2 读取映射文件 具体类的xml 注意文件路径
config.addFile("xxx/xxx.xml");
3. 获得Session工厂
SessionFactory factory = config.buildSessionFactory();
4. 获得session
Session session =factory.openSession();
5. 开启事务
Transaction tran=session.beginTransaction();
tran.begin();//这里开启了事务
session.save(stu);
6. 提交事务
tran.commit();
7. 关闭 会话
session.close();