当前位置:Gxlcms > 数据库问题 > JDBC API

JDBC API

时间:2021-07-01 10:21:17 帮助过:40人阅读

public class JdbcTest { // JDBC 驱动器的名称和数据库地址 static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EXAMPLE"; static final String USER = "root"; static final String PASS = "";这里为自己的sql的密码 public static void main(String[] args) { Connection conn = null; PreparedStatement stmt = null; try{ //注册 JDBC 驱动器 Class.forName("com.mysql.jdbc.Driver"); //打开连接 System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); //执行查询 System.out.println("Creating statement..."); //这里我们要更改一个同学的年龄,参数待定 String sql = "UPDATE Students set age=? WHERE id=?"; stmt = conn.prepareStatement(sql); //将值绑定到参数,参数从左至右序号为1,2... stmt.setInt(1, 22); // 绑定 age 的值(序号为1) stmt.setInt(2, 1); // 绑定 ID 的值 // 更新 ID 为1的同学的年龄 int rows = stmt.executeUpdate(); System.out.println("被影响的行数 : " + rows ); // 查询所有记录,并显示. sql = "SELECT id, name, age FROM Students"; ResultSet rs = stmt.executeQuery(sql); //处理结果集 while(rs.next()){ //检索 int id = rs.getInt("id"); int age = rs.getInt("age"); String name = rs.getString("name"); //显示 System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", Name: " + name); System.out.println(); } //清理 rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ se.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("Goodbye!"); } }

2.PreparedStatement和CallableStatement 

三种类型的参数有:IN,OUT 和 INOUT。

PreparedStatement 对象只使用 IN 参数。

CallableStatement 对象可以使用所有三个

参数描述
IN 它的值是在创建 SQL 语句时未知的参数,将 IN 参数传给 CallableStatement 对象是通过 setXXX() 方法完成的
OUT 其值由它返回的 SQL 语句提供的参数。从 OUT 参数的 getXXX() 方法检索值
INOUT 同时提供输入和输出值的参数,绑定的 setXXX() 方法的变量,并使用 getXXX() 方法检索值

 

在 JDBC 中调用存储过程的语法如下所示。注意,方括号表示其间的内容是可选项;方括号本身并不是语法的组成部份。

返回结果参数的过程的语法为:

{? = call 存储过程名[(?, ?, ...)]}

不带参数的存储过程的语法类似:

{call 存储过程名}

 

创建结果集

try {
   Statement stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
游标可以向前和向后滚动,但不及时更新,就是如果数据库里的数据修改过,并不在 ResultSet 中反应出来

                           ResultSet.CONCUR_UPDATABLE);
}
catch(Exception ex) {
   ....
}
finally {
   ....
}

 

JDBC API

标签:修改   jdbc   eating   ddl   where   ack   etc   database   host   

人气教程排行