我很怀疑以后到公司如果不让用myeclipse,我还会不会做项目,哎,不管了,先复习一下jdbc- -
1,刚开始接触时的jdbc
刚开始接触的时候,jdbc是最简单的,没工厂,没class.forName.直接连
//加载驱动,最原始的了 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2.获得连接 String url = "jdbc:mysql://localhost:3306/etoak"; String user="root"; String pwd="etoak"; Connection con = DriverManager.getConnection(url,user,pwd); //3.创建执行SQL的Statement对象 后来说这厮不安全 - - 让用PreparedStatement Statement sta = con.createStatement(); //4.执行SQL并返回结果 String sql = "select * from student"; ResultSet rs = sta.executeQuery(sql); //5.处理结果 while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id===>"+id+",\t name===>"+name); } //6.关闭资源 rs.close(); sta.close(); con.close();
对于Statement的研究
? executeUpdate 返回值是对数据库影响的行数 不能用于select查询
execute是一个万能方法 可以执行任意的SQL语句 返回值是ture/false 由是否有ResultSet对象决定,只要有ResultSet,不管其是否是空,返回值都是true
?
?
对于ResultSet结果的处理 可以根据字段拿,也可以根据顺序拿
import java.sql.*; //测试ResultSet 的基本用法 public class TestRS{ public static void main(String arg[])throws Exception{ Connection con = CF.getConnection("mysql"); Statement sta =con.createStatement(); String sql ="select * from student"; ResultSet rs = sta.executeQuery(sql); while(rs.next()){//控制行 int id = rs.getInt("id");//列 String name = rs.getString(2); int age = rs.getInt("age"); Date birth = rs.getDate(4); System.out.println(id+"\t"+name+"\t"+age+"\t"+birth); } } }
??
后来,说可以把获得连接那需要的参数写在一个.properties文件里.
#this is comment #Sun Jan 06 16:55:04 CST 2013 user=root password=etoak url=jdbc\:mysql\:///mysql xinbanzhang=xiaohei driver=com.mysql.jdbc.Driver
?然后
Properties pro = new Properties(); pro.load(new FileReader(new File("etoak.properties")));
?并且加载驱动也不用最原始的方法了
//加载类com.mysql.jdbc.Driver Class.forName(pro.getProperty("driver"));
?然后获取连接
Connection con = DriverManager.getConnection(pro.getProperty("url"),pro);
?
这个方法在api中真有 static Connection getConnection(String url, Properties info) 试图建立到给定数据库 URL 的连接。
?哦.忘了一个小插曲 上面提到的properties的创建,使用等
import java.util.*; import java.io.*; //测试Properties的具体用法 String File public class TestPro{ public static void main(String args[]) throws Exception{ Properties pro = new Properties(); Reader reader = new FileReader("etoak.properties"); //加载配置信息 pro.load(reader); reader.close(); //根据key获得value System.out.println(pro.getProperty("xinbanzhang")); //添加属性 pro.setProperty("xinbanzhang","xiaohei"); //写出 第二个是对文件的说明,注释 pro.store(new FileOutputStream("etoak.properties"),"this is comment"); } }
?最后就是刚开始提到的工厂"CF"了.connection factory
这个工厂是读取本地xml文件,写到properties里.然后DriverManager获取连接
import java.sql.*; import org.dom4j.*; import org.dom4j.io.*; import java.util.*; import java.io.*; // 作为连接的工厂 对外提供连接 public class CF{ //对外提供连接的方法 public static Connection getConnection(String dbName)throws Exception{ Properties pro = getConfig(dbName); String driver = pro.getProperty("driver"); String url = pro.getProperty("url"); String user = pro.getProperty("user"); String pwd = pro.getProperty("password"); Class.forName(driver); return DriverManager.getConnection(url,user,pwd); } private static Properties getConfig(String dbName)throws Exception{ Properties pro = new Properties(); //解析配置文件 返回数据库的连接信息 SAXRe