访问数据库的步骤
- 加载驱动程序
Class.forName(driver.class); - 建立连接
Connection con = DriverManager.getConnection(url,user,pwd); - 创建语句对象
Statement stmt = con.createStatement();
PreparedStatement pstmt = con.prepareStatement(sql); - 执行sql语句
ResultSet rs = stmt.executeQuery(sql); - 结果集对象处理及关闭
rs.close(); - 关闭语句对象
stmt.close(); - 关闭连接
con.close();
连接各种数据库的驱动和URl格式
- Oracle数据库
驱动:oracle.jdbc.driver.OracleDriver——>Class.forName().newInstance();
URL: ” jdbc:oracle:thin:@localhost:1521:orcl”
格式:“jdbc:驱动名称:连接模式:@数据库服务器IP:端口号:数据库SID”; - MySQL数据库
驱动:com.mysql.jdbc.Driver
URL:–> jdbc:mysql://localhost:3306/DBName - SQLServer数据库
SQLServer2000
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=DBName
SQLServer2005-2008
驱动:com.microsoft.sqlserver.jdbc.SQLServerDriver
URL:jdbc:sqlserver://127.0.0.1:1433;databasename=DBName
JDBC-ODBC
驱动:sun.jdbc.odbc.JdbcOdbcDriver
URL :jdbc:odbcL:数据源
SQLServer2000和2005的驱动和URL的不同,请细心观察。
ResultSet滚动结果集
ResultSet对象允许在这个结果数据表中一行一行的移动,如果想要跳到某一位置去查询数据,就需要一个滚动结果集。
Statement stmt = con.createStatement(int type, int concurreny);
滚动结果集能够实现游标的任意移动 修改、添加、删除结果集的内容并更新到数据库中,具体用法参照API文档
Statement和PrepareStatement的区别
- statement 执行一次就编译一次sql语句,无缓冲,安全性能差(需要过滤处理)
- PrepareStatement 一次编译多次使用,sql语句存缓存中,适用于批处理 ; 代码可读性,维护性好; 极大的提高了安全性,能避免恶意SQL语法破坏不用对传入进行过滤处理。如包含“;drop table tname”;
- 一般情况下都用PrepareStatement语句代替Statement语句