欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java_第一年_JDBC(1)

程序员文章站 2023-04-05 13:53:34
JDBC(Java Data Base Connectivity),用于实现java语言编程与数据库连接的API。 JDBC体系结构由两层组成: JDBC API :提供java应用程序到JDBC管理器的连接 JDBC驱动程序API:支持JDBC管理器到驱动程序的连接 建立JDBC连接: 导入JDB ......

  jdbc(java data base connectivity),用于实现java语言编程与数据库连接的api。

jdbc体系结构由两层组成:

  •   jdbc api :提供java应用程序到jdbc管理器的连接
  •        jdbc驱动程序api:支持jdbc管理器到驱动程序的连接

建立jdbc连接:

  • 导入jdbc包:
import java.sql.*

 

  • 注册jdbc驱动程序并创建连接对象conn:
class.forname("com.mysql.jdbc.driver");
connection conn = null;
conn = drivermanager.getconnection("jdbc:mysql://hostname:port/db_name","db_username","db_password");
conn.close();

这样,我们的jdbc连接即已建好。

交互

连接建立后,通常通过jdbc statement、callablestatement和preparestatement这3个接口进行交互。

  • statement:用于使用静态sql语句,不能接受参数;

创建statement对象:

statement stmt = null;
try{
    stmt = conn.createstatement();               
}catch(sqlexception e){
     ...
}finally{
     ...    
}    

该对象常用的3种方法:

boolean execute(string sql ):检索sql运行后结果是否存在,有则返回true,没有则返回false;

int executeupdate(string sql):检索sql语句所影响的行数,常用于会影响多行改动的sql语句,如insert、update、delete;

resultset executequery(string sql):返回运行后的结果集合,常用于select;

关闭statement对象:

finally{
    stmt.close();     
}
  • preparedstatement:扩展了statement接口,可支持动态,可接受参数,参数类型只使用in;

创建preparedstatement对象:

preparedstatement pstmt = null;
try{
    string sql = "update employees set age = ? where id = ?";
    pstmt = conn.preparestatement(sql);
    ...        
}catch{
    ...
}finally{
    pstmt.close();
}

其中?即表示要输入的参数。通过stmt.setxxx(number,value);输入参数,其中xxx表示参数数值类型,number表示?在程序出现的位置,从1开始计数;value表示输入参数的值;

statement对象可用的3种方法都可以使用。

  • callablestatement:相比于preparedstatement对象,其参数类型有in、out、inout三种;

创建callablestatement对象:

callablestatement cstmt = null;
try{
    string strsql = "{call getempname(?,?)}";
    cstmte = conn.preparecall(sql);
    ...
}catch(sqlexception e){
     ...  
}finally{
     cstmt.close();
}

对比前面的3种方法,callcblestatement多了一种方法:registeroutparameter(),该方法将jdbc数据类型绑定到存储过程并返回预期数据类型。

当调用存储过程,可以使用适当的getxxx()方法从out参数中检索该值。 此方法将检索到的sql类型的值转换为对应的java数据类型。