8.1 Statement类
8.1.1 Statement类的作用
statement类是用于送sql语句到后端数据库的。
8.1.2 Statement使用
- 创建对象
步骤:
连接数据库:
Connection conn = DriverManager.getConnection(url,user,password);
创建对象:
Statement st = conn.createStatement();
执行sql语句
ResultSet rs = st.executeQuery("select * from t1");
-
执行sql语句的方法
- executeQuery
用于产生单个结果集的语句,主要用来执行select语句
- executeUpdate
executeUpdate的返回值是一个整数,指示受影响的行数。主要用于执行DML,DDL语句,对于INSERT,UPDATE,DELETE等都 会返回一个指定行数的整数值 ,对于CREATE TABLE,DROP TABLE 都返回0
- execute
execute主要返回多个结果集,是使用executeQuery,executeUpdate的结合,一般用的不多。
-
关闭对象
调用GC关闭。
8.1.3 执行sql语句的举例
/*
执行sql三步曲:
1. 连接数据库
2. 构建sql语句
3. 执行
*/
//1. 首先,我们可以写一个用于执行函数的方法
//写法逻辑:遍历sql变量中的sql语句,有一条算一条全部加入到sm这个对象,调用executeBatch这个函数一起执行
public static int[] goBatch(Connection conn, String[] sql) throws Exception
{
if(sql == null)
{
return null;
}
try(Statement sm = conn.createStatement())
{
for(String s: sql)
{
sm.addBatch(s);
}
return sm.executeBatch();
}
catch(SQLException e)
{
e.printStackTrace();
}
return null;
}
//2. 准备sql语句,主要是为测试,此次写几个简单的测例。
// int[] result = goBatch(conn, sqls)用于接收返回的结果集。获取到sql后,调用此数组,打印出此数组的内容。
static class StartBackup
{
public void run()
{
String[] sqls = new String[2];
sqls[0] = "CALL mysql.greatdb_add_backup_node('backup_node_1','172.1
6.70.207', 13310)";
sqls[1] = "call mysql.greatdb_start_full_backup()";
Connection conn = ConnHost.startThreadConn1();
try
{
int[] result = goBatch(conn, sqls);
System.out.println(Arrays.toString(result));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}