java_第一年_JDBC(1)

2019-09-30 06:57:31来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

java_第一年_JDBC(1)

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


原文链接:https://www.cnblogs.com/lzj-learn/p/11584487.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:java中文件复制的4种方式

下一篇:MyBatis一级缓存的笔记及记录