`
meiyoudao
  • 浏览: 87963 次
  • 性别: Icon_minigender_1
  • 来自: 冲脉
社区版块
存档分类
最新评论

JDBC基础知识

阅读更多
             Connection con = null;
             Statement st = null;
             ResultSet rs = null;
		try {
			/*
			 * 可以注册多个驱动
			 * 如:
			 * DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			 * DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			 * 
			 * 又如:以冒号(:)分隔
			 * System.setProperty("jdbc.drivers", "oracle.jdbc.driver.OracleDriver:com.mysql.jdbc.Driver");
			 * 
			 */
			//1.注册驱动
			//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			
			//1.注册驱动的另一种方法
			//System.setProperty("jdbc.drivers", "oracle.jdbc.driver.OracleDriver");
			//1.注册驱动的另一种方法
			//new oracle.jdbc.driver.OracleDriver();
			//1.注册驱动的另一种方法
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
			
                     //2.建立连接
			con = DriverManager.getConnection("jdbc:oracle:thin:@10.70.9.20:1521:ora10gtest", "icdpub", "icdpub");
                         String sql = "select * from dual";

			//3.创建执行SQL的语句
			 st = con.createStatement();
                         rs = st.executeQuery(sql);
                         while(rs.next()){
				//第1行第N列
				System.out.println(rs.getObject(4));
			}
                        
		} catch (SQLException e) {
			e.printStackTrace();
                //4.关闭连接
		}finally{
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally{
				try {
					st.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}finally{
					try {
						con.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
					
				}
				
			}
			
			
		}


1.接口PreparedStatement继承Statement接口
执行时间比较,
创建连接后,第一次
Statement比PreparedStatement速度快.
之后PreparedStatement比Statement快.
这个根据数据库驱动,以及数据库有很大关系.
PreparedStatement为推荐使用.

PreparedStatement可以对参数进行过滤.防止违规参数输入.

2.驱动注册方法有很多种.
类oracle.jdbc.driver.OracleDriver中有一个静态方法.
方法中有这样一段
defaultDriver = new OracleDriver();
                DriverManager.registerDriver(defaultDriver);

从这里可以看出,new oracle.jdbc.driver.OracleDriver();
也是通过DriverManager注册的.

Class.forName("oracle.jdbc.driver.OracleDriver");为推荐方法

3.SQL语句,使用列名查询,不要按第几列第几列查询.这样做开发工作量比较大,但是维护成本就降低了.

con.setAutoCommit(false);//设置事务为手动控制
		con.commit();//提交事务
		con.rollback();//回滚事务




//批处理语句
ps = conn.prepareStatement(sql);
			for (int i = 0; i < 100; i++) {
				ps.setString(1, "batch name" + i);
				ps.setDate(2, new Date(System.currentTimeMillis()));
				ps.setFloat(3, 100f + i);

				ps.addBatch();
//增加SQL语句可以针对每个不同的情况批处理
//ps.addBatch(sql);
			}
			int[] is = ps.executeBatch();

/*
 * mysql 参数
Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/icdpub","root","root");
*/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics