A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苹果核的梦想 中级黑马   /  2015-11-19 15:00  /  472 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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中
* 推荐使用这种方式

关闭数据库连接要注意关闭顺序与获取顺序相反

/**
* 关闭连接
*/
  1. public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs) {
  2.         if(rs != null) {
  3.             try {
  4.                 rs.close();
  5.             } catch (SQLException e) {
  6.                 e.printStackTrace();
  7.             }
  8.             rs = null;
  9.         }
  10.         if(pstmt != null) {
  11.             try {
  12.                 pstmt.close();
  13.             } catch (SQLException e) {
  14.                 e.printStackTrace();
  15.             }
  16.             pstmt = null;
  17.         }
  18.         if(conn != null) {
  19.             try {
  20.                 conn.close();
  21.             } catch (SQLException e) {
  22.                 e.printStackTrace();
  23.             }
  24.             conn = null;
  25.         }
  26.     }
复制代码


查询过程(注:以下方法都没关闭连接):
1)Statement查询
  1. Statement stmt = conn.createStatement();
  2. String sql = "select * from 表名";
  3. ResultSet rs = stmt.executeQuery(sql);
  4. while (rs.next()) {                
  5. System.out.println(rs.getString("列名") + "\t" + rs.getString("列名"));
  6. }
复制代码


2)preparedStatement查询

  1. PreparedStatement pstmt = null;
  2. String sql = "select * from cars";
  3. String sql_1 = "insert into cars values (?,?,?,? )";
  4. /*
  5. * 查询车辆信息
  6. */
  7. pstmt = conn.prepareStatement(sql);
  8. pstmt.executeQuery(sql);
  9. /*
  10. * 插入车辆信息
  11. */
  12. pstmt = conn.prepareStatement(sql_1);
  13. pstmt.setString(1, "蒙B123456");
  14. pstmt.setString(2, "张三");
  15. pstmt.setString(3, "灰色");
  16. pstmt.setInt(4, 12000);
  17. pstmt.executeUpdate();
  18. Preparedstatement查询时pstmt.executeUpdate();执行语句中不能有sql参数,否则会有sql语句为空的Exception
复制代码

3 个回复

倒序浏览
学习了
回复 使用道具 举报
你这只是mysql的,oracle还是有点区别的
回复 使用道具 举报
唯我独赞mo 发表于 2015-11-19 22:03
你这只是mysql的,oracle还是有点区别的

对啊,我目前只学了MySQL,以后会学oracle,不过有了hibernate神器的话,嘿嘿。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马