java知识点——数据库JDBC相关
l JDBC : Java data base connectivity,java数据库连接技术,为java程序提供一套操作各种数据库的统一接口:
l Driver 接口:所有JDBC驱动程序均实现了Driver接口
l DriverManager 类:负责管理JDBC驱动
l Connection 接口:一个Connection示例代表与数据库的连接,一个程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接
l Statement 接口:用于执行静态SQL语句
l PreparedStatment 接口:用于执行动态SQL语句
l ResultSet 接口:查询数据库最终得到结果记录集
JDBC访问数据库的基本步骤:
(1) 拷贝JDBC驱动到classpath对应的路径中;
(2) 加载JDBC驱动并注册到DriverManager中:
//Oracle8/8i/9i数据库(thin)模式 Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); //Sql Server7.0/2000数据库 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance(); //DB2数据库 Class.forName(“com.ibm.db2.jdbc.app.DB2Driver”).newInstance(); //Informix数据库 Class.forName(“com.informix.jdbc.IfxDriver”).newInstance(); //Sybase数据库 Class.forName(“com.sybase.jdbc.SybDriver”).newInstance(); //MySQL数据库 Class.forName(“com.mysql.jdbc.Driver”).newInstance(); //PostgreSQL数据库 Class.forName(“org.postgresql.Driver”).newInstance();
(3) 建立数据库连接,获得Connection对象
//Oracle8/8i/9i数据库(thin模式) String url = "jdbc:oracle:thin:@localhost:1521:orcl";//oracle中每个表对应对象,没有数据库界限?此处orcl指? String user = "scott"; String password = "tiger"; Connection conn = DriverManager.getConnection(url,user,password); //SQL Server7.0/2000数据库 String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";//此处pubs为sqlserver中数据库名 String user = "sa"; String password = ""; Connection conn = DriverManager.getConnection(url,user,password); //DB2数据库 String url = "jdbc:db2://localhost:5000/sample";//此处sample为DB2中数据库名 String user = "admin"; String password = ""; Connection conn = DriverManager.getConnection(url,user,password); //Informix数据库 String url = "jdbc:informix-sqli://localhost:1533/testDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword"; Connection conn = DriverManager.getConnection(url); //Sybase数据库 String url = "jdbc:sybase:Tds:localhost:5007/tsdata"; Properties sysProps = System.getProperties(); sysProps.put("user","userid"); sysProps.put("password","user_password"); Connection conn = DriverManager.getConnection(url,sysProps); //Mysql数据库 String url = "jdbc:mysql://localhost:3306/testDB?user=root&password=root&useUnicode=true&characterEncoding=gb2312"; Connection conn = DriverManager.getConnection(url); //PostgreSQL数据库 String url = "jdbc:postgresql://localhost/testDB"; String user = "myuser"; String password = "mypassword"; Connection (url,user,password);
(4) 指定事务边界 try catch
(5) 编写SQL语句,建立Statement或PreparedStatement对象
//建立Statment对象 String sql = "select * from user"; Statement stmt = conn.createStatement(); //建立PreparedStatement对象 String sql2 = "select * from user where userId=? and userPassword=?"; PreparedStatement pstmt = conn.prepareStatement(sql2); pstmt.setInt(1,userId); pstmt.setString(2,password);
(6) 调用相应的插查删改API,执行SQL语句
//静态SQL ResultSet rs = stmt.executeQuery(sql);//静态的SQL还有一个executeUpdate(sql)执行查删改操作 //动态SQL ResultSet rs = pstmt.executeQuery();
(7) 访问结果记录集ResultSet对象
while(rs.next){ rs.getString(1); }
(8) 提交,边界结束
(9) 释放资源:rs.close();pstmt.close();stmt.close();conn.close()