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数据类型。