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();
  • 相关阅读:
    Qt中不同类型数据之间的相互转换
    数组传参
    sizeof和strlen区别
    打印字符‘烫’
    vivado hls(1)
    时序约束方法(2)
    FPGA浮点数定点化
    FPGA设计思想与技巧(转载)
    视频采集显示总结
    Verilog code
  • 原文地址:https://www.cnblogs.com/haofaner/p/5645105.html
Copyright © 2011-2022 走看看