some tips about jdbc

Driver接口

 每个数据库驱动程序必须实现Driver接口,对于java开发者而言,只需要使用Driver接口就可以了,我们在编程中要连接数据库,必须先装载特定厂商提供的数据库驱动程序(Driver),不同驱动程序的装载方法如下:

//装载Oracle JDBC 驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//装载MS SQLServer JDBC 驱动

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

//装载MySQL JDBC 驱动

Class.forName("org.gjt.mysql.Driver");

 

DriverManager

DriverManage(驱动程序管理器)类是JDBC的管理层,作用于用户和驱动程序之间.当DriverManager激发getConnection()方法时,DriverManager类首先从它已加载的驱动程序池中找到一个可以接受该数据库URL的驱动程序,然后请求该驱动程序使用相关的数据库URL去连接到数据库中.于是getConnection()方法建立了与数据库的连接.

 

常用的装载驱动方法:显式装载驱动程序

 

try{

 

   //装载SQLServer 驱动

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

  //装载Oracle驱动

  Class.forName("oracle.jdbc.driver.OracleDriver");

 

  Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_library","root","");

  Statement stmt = conn.createStatement();

 

}catch(ClassNotFoundException e)

{

   System.out.println("Driver not found");

}

 

static Connection getConnection(String url, String user, String password): 连接到指定URL的数据库,使用用户名为user,密码为password

 

 

 

Statement

Statement提供在基层连接上运行SQL语句,并且访问结果.Connection接口提供了生成Statement的方法.

 

Statement提供了许多方法:

execute():运行语句,返回是否有结果集

executeQuery():运行查询语句,返回ResultSet对象

executeUpdate():运行更新操作,返回更新的行数

 

 

Statement有三种

 

Statment: 对象用于执行不带参数的简单SQL语句

.........

Connection conn = DatabaseConnection.getConnection();

Statement stmt = conn.createStatement();

ResultSet rst = stmt.executeQuery("select * from sometable");

........

 

PerparedStatement:对象用于执行带或不带IN参数的预编译SQL语句

........

Connection conn = DatabaseConnection.getConnection();

PreparedStatement pstmt = conn.prepareStatement("insert into user_info values(?,?,?,?,?,?,?,?)");

pstmt.setSting(1,"hellking");

pstmt.setInt(2,20);

.........

 

 

CallableStatement 对象用于执行对数据库的存储过程的调用

........

Connection conn = DatabaseConnection.getConnection();

strSQL = "{call demo_account(?,?,?,?,?,?)}";

CallableStatement sqlStmt = conn.prepareCall(StrSQL);

sqlStmt.setString(1,"userid_1");

sqlStmt.setString(2,"userid_2");

.........

 

//执行存储过程

int i = sqlStmt.executeUpdate();

 

 

ResulteSet

在Statement执行SQL语句时,有时会返回ResultSet结果集,ResultSet往往包含的是查询的结果集.

通过ResultSet.next()方法把当前的指针向下移动一位.最初它位于第一行之前,因此,第一次调用next将把指针置于第一行上,使它成为当前行.随着每次调用next导致指针向下移动,按照从上到下的次序获取 ResultSet行

 

.................

try{

  Connection conn = DatabaseConnection.getConnection();

  Statement stmt = conn.createStatement();

  ResultSet rst = stmt.executeQuery("select * from User_info");

  while(rst.next())

  {

     out.println(rst.getString("userName");

     out.println(rst.getDate("regDate");

     out.println(rst.getString(4));

    ........

   }

  }catch(SQLException e)

{

   out.println(e.getMessage());

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值