Java 的JDBC连接方法与技巧总结

1.JDBCJava database connection)

   数据库->对数据进行管理(增,删,改,查)

   应用程序对数据库数据进行操作

2.JDBC连接的固定套路

   (1)找到jdbc的jar包;

   (2)导包

   (3)jdbc的流程操作

      1.加载驱动

      2.创建连接

      3.创建状态参数

      4.执行操作(增,删,改,查)

        1) 增,删,改:修改executeUpdate

        2) 查:executeQuery :ResultSet

5. 关闭

JDBC的操作流程分为五步:

加载驱动,创建链接, 创建状态参数,执行操作,关闭连接;

对数据库的执行操作实际上可以分为两类,一类是修改executeUpdate,包括增,删,改;另一类是查executeQuery,返回一个结果集resultSet。 其次,对于数据库查询结果集的获取,一般用迭代器(Iterator next)来获取。当rs.next指向的元素有数据时,next指向会自动下移。例如:

ResultSet rs = stat.executeQuery(sql);
while(rs.next()){//不知道查询结果集对象数量时用while
System.out.println(rs.getString("ename")+rs.getInt("empno")+rs.getDate("hiredate"));
}
//一般情况下,如果知道结果集的数量时,最好还是使用if语句
If(rs.next()){
System.out.println(rs.getString("ename")+rs.getInt("empno")+rs.getDate("hiredate"));
}

其次关于列名的问题,如果要查询结果的列名不存在于表中,一般有两种做法

1)按列的顺序编号写

2)取别名: “ select count(* ) as co from emp”;

 

下面是一个MyEclipse的 Java数据库链接示例(Oracle数据库)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;


public class Test {

	public static void main(String[] args){
		String sql = "select * from emp where empno=7369";
		//列名标识符无效
		try {
			//1.加载驱动  驱动  [类] jar包里
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//2.创建连接 SqlServer 2000 jdbc提供jar包 实例名称 服务 OraleServiceOrcl:ora
			//"jdbc:oracle:thin:@localhost:1521:orcl"
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
			//3.创建状态参数
			Statement stat = conn.createStatement();
			//增,删,改
			//int i = stat.executeUpdate(sql);
			ResultSet rs = stat.executeQuery(sql);
			//对结果集遍历 迭代器Iterator next
			//数据类型:数据库数据的数据类型不同于Java的数据类型,所以需要getString,getInt来获取不同列名的元素;
			//rs.getString() varchar2   1 2 3 4 5 rs.getInt();
			while(rs.next()){
				System.out.println(rs.getString("ename")+rs.getInt("empno")+rs.getDate("hiredate"));
			}
			//结果集的数量问题,何时用while, 何时用if;
			//关闭的顺序,从小到大,由里到外;
			rs.close();
			stat.close();
			conn.close();
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

SQL语句过长时,如何处理, 一,采用分割符,二采用StringBuffer方法;

import java.sql.*

public class SQL {
	public static void main(String[] args) {
		//统计并显示一个班级(classno=1)的课程表,String StringBuffer
		StringBuffer sql = new StringBuffer("");
		sql.append("select ktime as mtime, ");
		sql.append("max(case kweek when '周一' then kname else 'x' end) as zhou1,");
		sql.append("max(case kweek when '周二' then kname else 'x' end) as zhou2,");
		sql.append("max(case kweek when '周三' then kname else 'x' end) as zhou3,");
		sql.append("max(case kweek when '周四' then kname else 'x' end) as zhou4,");
		sql.append("max(case kweek when '周五' then kname else 'x' end) as zhou5");
		sql.append(" from kechengbiao");
		sql.append(" where classno=1");
		sql.append(" group by ktime");
		sql.append(" order by ktime");
		//String sql1 = "select e.deptno as eno,d.deptno as dno from emp e,dept d where e.deptno!=d.deptno";
		System.out.println(sql.toString());
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
			Statement stat = conn.createStatement();
			ResultSet rs = stat.executeQuery(sql.toString());//ArrayList Hash Linked
			while (rs.next()){
	System.out.println(rs.getString("mtime")+"\t"+rs.getString("zhou1")+"\t"+rs.getString("zhou2")+"\t"+rs.getString("zhou3")+"\t"+rs.getString("zhou4")+"\t"+rs.getString("zhou5"));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

 

 

 

你可能感兴趣的:(数据库,Java,编程,JDBC)