java数据库的编程基础api的复习

对于Connection类常用的方法:

            public void getAutoCommit();获取当前的Connection对象是否为自动提交模式,如果不是的话,既当设置为手动提交模式的时候,在执行数据库增删改查的时候,要调用commit()方法,进行手动提交,默认情况下,Connection为自动提交模式。

           Statement createStatement();创建一个Statement对象来讲SQL语句发送到数据库,该方法返回Statement对象

           int getTransactionIsolation(); 获取Connection对象当前的事物的隔离级别。对应的有setTransactionIsolation();方法;

          boolean isClosed();判断当前的Connection对象是否为关闭状态,如果为true则无法再操作数据库,反之,亦反;

         boolean isReadOnly();判断当前的Connection对象是否为只读模式。对应的为setReadOnly();

         PreparedStatement prepareStatementF(String sql);  将参数化的sql语句预编译并存储在PreparedStatement对象中,并返回PreparedStatement对象,此方法适合频繁与数据库交互的sql语句,不需要重新编译,提高了程序的执行速度。

       void setAutoCommit(boolean autoCommit);设置Connection对象提交的模式,参数为true则为自动提交,不需要调用commit();方法,否则为手动提交,需要调用commit()方法。

 对于DriverManager类中常用的方法:

         public static   Connection getConnection(String url );通过数据库的链接地址,获取Connection方法;

         public  static  Connection getConnection(String url ,String user,String password);通过数据库的链接地址,用户,密码获取数据库连接对象;

扫描二维码关注公众号,回复: 4799273 查看本文章

         public  static   Connection getConnection(String url,Properties info);         url为数据库连接的url,info 为数据库连接的属性;

         public   static  void  registerDriver(Driver driver)  向DriverManager注册一个驱动对象,参数driver为要注册的驱动;

         public  static Enumeration<Driver>  getDrivers();              获取当前DriverManager中已经加载的所有数据库驱动程序;


  对于Statement类中的常用的方法:

          public  void  addBatch(String sql);  将sql语句添加到Statement对象的当前命令中列表中,该方法用于sql命令的批处理;加快数据的处理速度;

         public  void  executebatch();将一批sql命令提交到数据库执行,返回更新计数组成的数组,既int[]数组;

         public  ResultSet executeQuery(sql);   执行查询结果集的的sql语句命令,既select..............命令; 该方法返回一个ResutSet结果集;

        public   ResultSet executeUpdate(sql);执行delete,update,insert这些sql语句命令,该方法返回一个ResultSet结果集;

        Connection getConnection();返回获取当前Statement对象的Connection对象;

        boolean isClosed();判断当前的res是否被关闭;

  对于PreparedStatement类:该类时Statement的子类,具有父类的所有非private方法,只是该类对Statement类进行了扩展,添加了setXX方法等,

  对于ResultSet类:该类提供了getXX方法,同时又有以下方法:

                     int  getRow();获取当前行的行数;

                     boolean  absolute(int row);    将结果集的光标移动到指定行;

                     void   afterLast();将结果集光标移动到结果集的最后一行之后;

                     void  beforeFirst();将结果集光标移动到结果集的第一行之前,既释放ResultSet对象的数据库和JDBC资源;

                     void  deleteRow;         删除光标指向的当前行得数据,并同时将数据库中的数据也删除;但此时需要在preparedStatement(String sql , int ResultSet.YTPE_SCROLL_INSENSITIVE,int  ResultSet.CONCUR_UPDATABLE);createStatement()方法中类似;

                     boolean first()方法,将光标与移动到第一行;boolean last();方法将光标移动到最后一行;boolean next()将光标移动到下一行;boolean previous();将光标移动到前一行;有效则返回true,否则返回false;

                    对于ResultSet.TYPE_SCROLL_INSENSITIVE,当另外一个线程对数据库进行更改时,并不会影响当前的结果集,缓存中结果集中的数据依然没有变,按之前为更改之前的结果集进行输出;而ResultSet.TYPE_SCROLL_SENSITIVE,当另外一个线程,对数据库中的数据进行更改之后,在当前结果集进行输出时,由于之前从数据库中获取结果集数据时,结果集中的每一条数据都会有一个特定的id,在输出结果集的数据时,会根据id临时检查数据库中的当前的数据id所对应的数据是否改变,如果改变,则会将改变之后的数据反映到到当前的结果集中,然后再进行输出。但对于删除和插入时,并没用反映到结果集中,只有更新和的时候才会反映到结果集中,因为在删除的时候,只是对数据库中的信息进行了标记,使再次被查找时,不能被检索到,实际数据依然保存在数据库中,对于插入数据时,在插入数据库之前结果集中已经将原来的数据库中的数据检索了回来,均有特定的id标识,然而对于新插入的数据,结果集中没有新插入的数据的id,所以在结果集进行输出时,新插入的数据不会反映到当前的结果集中,


package DataPackage;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


/*
 * 该类是对java进行数据库开发的复习,2016年10月17日
 * */
class DBConnection{
private String db_driver  = "com.mysql.jdbc.Driver";        //数据库驱动的名称
private String db_url = "jdbc:mysql://localhost/example?useUnicode=true&characterEncoding=gbk";     //数据库的链接地址
private String db_pwd = "120110";     //数据库密码
private String db_user = "root";   //数据库名称
public Connection con = null;   //数据库连接对象
public DBConnection(){
}
protected Connection getDBConnection(){
try{
Class.forName(db_driver);
            con = DriverManager.getConnection(db_url,db_user,db_pwd);         //实例化数据库连接对象
            if(con!=null){
            System.out.println("加载数据库链接成功");
            }else{
            System.out.println("加载数据库链接失败");
            }
}catch(Exception e){
e.printStackTrace();
}
return this.con;
}

}
public class DataBase {


/**
* @param args
* @throws SQLException 
*/
public static void main(String[] args) throws SQLException {
DBConnection dbcon = new DBConnection();
Connection con = dbcon.getDBConnection();
// con.setAutoCommit(false);         //设置con不自动提交
String sql = "select * from tb_cjob order by jobid asc";              //创建查询的语句    desc降序排列,asc升序排列
try{
long startTime = System.currentTimeMillis();         //获取当前的毫秒数
// Statement ste = con.createStatement();       //创建Statement
PreparedStatement pre = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
//con.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability)
// pre.setString(1, "阿里巴巴");
System.out.println(con.getAutoCommit());
// con.commit();
pre.addBatch(sql);
//ste.clearBatch();
ResultSet  res = pre.executeQuery();        //执行到数据库
while(res.next()){
System.out.println("------------------------------------------------------");
System.out.println("当前的行数:"+res.getRow()+"          "+res.getString(1)+"       "+res.getString(2));
}
// res.absolute(1);               //将光标移动到ResutltSet对象的给定的行号,参数row为行编号
//          res.afterLast();                 //将光标移动到结果集的最后一行的后面
//          res.beforeFirst();            //释放res对象数据库和jdbc资源 ,既将光标放到第一行的前面
//          res.last();                //将光标放到最后一行
//          res.absolute(res.getRow());
// System.out.println(res.getRow()+"        "+res.getString(1)+"         "+res.getString(2)+"                "+res.getString(8));
// res.deleteRow();
if(res!=null){
res.close();
}
if(pre!=null){
pre.close();
}
System.out.println("res关闭了吗:"+res.isClosed()+"         ste关闭了吗:"+pre.isClosed());
long endTime = System.currentTimeMillis();
System.out.println("添加批处理之后的执行查询的时间为:"+(endTime-startTime));
   }catch(Exception e){e.printStackTrace();}
// System.out.println("con是否为自动提交模式:"+con.getAutoCommit());         //判断con是否为为自动提交模式,返回true,此时为默认模式
// DatabaseMetaData dbmd = (DatabaseMetaData) con.getMetaData();      
// System.out.println("当前con的对象的隔离级别:"+con.getTransactionIsolation());      //当前con对象的隔离级别
// System.out.println(dbmd.getStringFunctions());
// System.out.println("con调用close之前是否已和数据库断开连接:"+con.isClosed());     //返回false
// System.out.println("con调用close之后是否和数据库断开连接:"+con.isClosed());     //返回true
//
// System.out.println("con是否为只读模式:"+con.isReadOnly());   //判断con是否为只读模式
// con.setAutoCommit(false);
// Enumeration enu = DriverManager.getDrivers();
// while(enu.hasMoreElements()){
//  System.out.println(enu.nextElement());
// }
// //DriverManager.setLoginTimeout(5000);
// int logintimeout = DriverManager.getLoginTimeout();
// System.out.println("logtimeout:"+logintimeout);
//
con.close();
}


}








  





       








猜你喜欢

转载自blog.csdn.net/jialijuan521_zhang/article/details/52841952