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