table继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 24.Error与Exception有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 25.statement 和preparestatement区别 1)创建时的区别: Statement stm=con.createStatement(); PreparedStatement pstm=con.prepareStatement(sql); 执行的时候: stm.execute(sql); pstm.execute(); 2)pstm一旦绑定了SQL,此pstm就不能执行其他的Sql,即只能执行一条SQL命令。 stm可以执行多条SQL命令。 3)对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。 4)当需要外部变量的时候,pstm的执行效率更高. 26.写一个数据库连接类,包括查询及结果存储。 import java.sql.*; //需要加入的包 //类的定义 class DBConnect { private String con1 = “sun.jdbc.odbc.JdbcOdbcDriver”; //连接SQL所需要的字符串 private String url = “jdbc:odbc:test”; private String user = “sa”, password = “”; //这里请根据您的数据库用户和密码自行修改 Connection con; //用于连接数据库用的 PreparedStatement ps; //其实用Statement也行,PreparedStatement集成了Statement. ResultSet rs; //一个集合,可以用于执行SQL命令 //构造函数 DBConnect() { try { Class.forName(con1); //Class.forName()用于将一些类加载到JVM this.Connect(); //函数调用 try { this.execute(); } catch (SQLException ex) { System.out.println(ex.toString()); } } catch (ClassNotFoundException ce) { System.out.println(ce); } } public void Connect() { try { con = DriverManager.getConnection(url, user, password); //做这部之前先把ODBC配置好 if (con != null) { System.out.println(“Connection Sucessfully!”); } } catch (SQLException ex) { System.out.println(ex.toString()); } } public void execute() throws SQLException { ps = con.prepareStatement(“select *from friends”); //把SQL语句搞给ps rs = ps.executeQuery(); //这里执行,之后让rs知道信息 while (rs.next()) //这里必须加next(),偏移量移动. { System.out.print(rs.getString(2) + “\t”); System.out.print(rs.getString(3) + “\t”); System.out.print(rs.getString(4) + “\t”); System.out.print(rs.getDate(5) + “\t”); System.out.print(rs.getInt(6) + “\t”); System.out.println(“”); } } public void close() //用于释放资源,Java里没有析构函数,但是通过重写protected void finalize(), { //之后在调用System.runFinalization()和System.gc()可以提醒JVM执行finalize()以释放, try{ //在以前的J2SE版本里可以通过以上方法调用finalize(),但目前的J2SE5.0只能提醒JVM,但JVM不一定执行 rs.close(); //最好的方案还是自己写析构close(); ps.close(); con.close(); }catch(SQLException ce) { System.out.println(ce.toString()); } System.out.println(“Connection released!!!”); } public static void main(String[] args) { DBConnect dbc=new DBConnect(); dbc.close(); } }
|