zoukankan      html  css  js  c++  java
  • jdbc操作数据库

    Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,
    这个API的常用方法:
        DriverManager.registerDriver(new Driver());
        DriverManager.getConnection(url,user,password);
    注意:在实际开发中并不推荐采用registerDriver方法注册驱动,原因有二:
    1.查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。
    2.程序依赖Mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
        推荐方式:Class.forName("com.mysql.jdbc.Driver");
        采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅需要一个字符串峭需要依赖具体的驱动,使程序的灵活性更高。
     
    URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:    jdbc:mysql://  localhost:3306/test ?key=value
     
     
    常用数据库URL地址的写法: Oracle写法:
    mysql url: jdbc:mysql://localhost:3306/数据库名
    oracle url: jdbc:oracle:thin:@localhost:1521:sid
     
    jdbc:oracle:thin:@localhost:1521:sid
    MySql—jdbc:mysql://localhost:3306/sid
    Mysql的url地址的简写形式: jdbc:mysql:///sid
    常用属性:useUnicode=true&characterEncoding=UTF-8
     
     
         // 注册驱动
            第一种:DriverManager.registerDriver(new Driver());
            第二种 :Class.forName("com.mysql.jdbc.Driver");
    使用第一种时,在com.mysql.jdbc.Driver类中有一段静态代码块:
     
    sttic {
    try {
    java.sql.DriverManager.registerDriver(new Driver());
    }
    catch(SQLException ex){
    throw new RuntimeException("Can't register driver");
    }
    }
     
    上述代码的问题:
        1,在驱动管理器中会装入两个mysql驱动。解决方案:使用反射
            Class.forName("com.mysql.jdbc.Driver");
    分析:使用反射的方式来加载驱动有什么好处?
    a.只加载一次,装入一个驱动对象,
    b.降低耦合,不依赖于驱动。
     
     
    importjava.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import org.gjt.mm.mysql.Driver;
              
     
     
    // 注册驱动
    DriverManager.registerDriver(new Driver());
     
    // 连接测试
    Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/mydb1", "root", "root");
    // 通过连接对象 创建操作sql语句对象 Statement
    Statement st = conn.createStatement();
    // 操作的sql语句
    String t_sql = "select * from employee";
    // 执行sql 返回 查询结果集 ResultSet;
    java.sql.ResultSet rs = st.executeQuery(t_sql);
     
    // 遍历结果集
    while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    String gender = rs.getString("gender");
    System.out.println("流水编号:" + id + ", 姓名:" + name + " ,职位:" + gender
    + ";");
    }
     
              // 释放资源
               rs.close();
               st.close();
               conn.close();
  • 相关阅读:
    EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
    EXTJS 4.2 资料 控件之Window窗体相关属性的用法
    EXTJS 4.2 资料 控件之textfield文本框加事件的用法
    Entity Framework 学习笔记(一)之数据模型 数据库
    EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)
    EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
    Entity Framework 学习笔记(二)之数据模型 Model 使用过程
    EXTJS 4.2 资料 控件之radiogroup 的用法
    EXTJS API
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/haofaner/p/5645105.html
Copyright © 2011-2022 走看看