MySQL Connector/J是一个JDBC( )驱动 D
A、
Type 1
B、
Type 2
C、
Type 3
D、
Type 4
使用Class类的forName()加载驱动程序需要捕获( )异常。 b
A、
SQLException
B、
ClassNotFoundException
C、
IOException
D、
DBException
使用Connection接口的(C )方法可以建立一个PreparedStatement对象
(5.0分)
A、
createPrepareStatement()
B、
createPreparedStatement()
C、
PrepareStatement()
D、
PreparedStatement()
在JDBC编程中执行下列SQL语句"SELECT id,name FROM employee",获取结果集rs的第2列数据的代码是 B
A、
rs.getString(1)
B、
rs.getString(2)
C、
rs.getString(name)
D、
rs.getString(“id”)
如果要创建带参数的SQL查询语句,应该使用( )对象 B
(5.0分)
A、
Statement
B、
PreparedStatement
C、
PrepareStatment
D、
CallableStatement
下面描述中不属于连接池的功能的是 C
A、
可以缓解连接频繁的关闭和创建所造成的系统性能下降
B、
可以限制客户端的连接数量
C、
可以大幅度提高查询语句的执行效率
D、
可以提高系统的伸缩性
下面关于PreparedStatement的说法错误的是( B)
(5.0分)
A、
PreparedStatement继承Statement
B、
PreparedStatement不能用于批量更新操作
C、
PreparedStatement可以防止SQL注入,更加安全
D、
PreparedStatement可以存储预编译的Statement,从而提升执行效率
加载JDBC驱动,使用Java连接university数据库,查询instructor表中salary大于70000的教师信息,按照dept_name的升序排列后用System.out.println()输出,各列数据之间用|分隔。
ID|name|dept_name|salary
将编写的Java类代码贴在下方输入框中。
package test.jdbc;
import java.math.BigDecimal;
import java.sql.*;
public class Exer1 {
public static void main(String arg[]){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
}catch(ClassNotFoundException e){
System.out.println("加载数据库驱动时抛出异常!");
e.printStackTrace();
}
try {
String url="";
String user="root";
String password="";
Connection conn = DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement();
String sql = "select ID,name,dept_name,salary from instructor where salary > 70000 order by dept_name";
ResultSet rs = stmt.executeQuery(sql);
int id;
String name,dept_name;
BigDecimal salary;
System.out.println("id" + " | " +"name" + " | "+"dept_name"+ " | "+"salary");
while(rs.next()){
id = rs.getInt(1);
name = rs.getString(2);
dept_name = rs.getString(3);
salary=rs.getBigDecimal(4);
System.out.println(id + " | " +name + " | "+dept_name+ " | "+salary);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
import java.math.BigDecimal;
import java.sql.*;
public class Main
{
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
//System.out.println("Hello world!");
// 1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2。获取链接
String url = "jdbc:mysql://127.0.0.1:3306/university?Unicode=true&character" +
"Encoding=utf8&useSSL=true&serverTimezone=UTC";
String username = "root";
String password = "";
Connection conn = DriverManager.getConnection(url, username, password);
// 3. sql sentence
String sql = "select * from instructor where salary > 70000 order by dept_name asc;";
// 4. 获取执行sql的对象
//Statement stmt = conn.createStatement();
PreparedStatement pstmt = conn.prepareStatement(sql);
//pstmt.setInt(1, 3);
//CallableStatement cstmt = conn.prepareCall(sql);
//cstmt.setInt(1, 3);
// 5.执行sql
ResultSet rs = pstmt.executeQuery(sql);
//受影响的行数
// 6。处理结果
//System.out.println(count);
while(rs.next())
{
ResultSetMetaData rsmd = rs.getMetaData();
int col = rsmd.getColumnCount();
for(int i = 1; i < col ; i++)
{
String name = rsmd.getColumnName(i);//起始是1
System.out.print(rs.getString(name) + "|");
}
System.out.println(rs.getString(rsmd.getColumnName(col)));
}
// 7. 释放资源
pstmt.close();
conn.close();
System.out.println("You've finished the program successfully!\n");
}
}
查阅资料学习JDBC CallableStatements执行存储过程的方法:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-statements-callable.html
(1)在Univerisity中编写一个带输入参数和输出参数的存储过程demoSp,功能自定,给出存储过程定义。
(2)编写Java代码调用存储过程,指定输入参数,获取输出参数后输出。给出调用存储过程的关键代码。
drop procedure demoSp;
delimiter //
create procedure demoSp
(
in a varchar(5),
out c varchar(20)
)
begin
set c = (select name from instructor where id = a);
end
//
delimiter ;
import java.sql.*;
public class calla {
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/university?Unicode=true&character" +
"Encoding=utf8&useSSL=true&serverTimezone=UTC";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "call demoSp(?, ?)";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, "22222");
cstmt.registerOutParameter(2, Types.VARCHAR);
cstmt.execute();
String str = cstmt.getString(2);
System.out.println(str);
/*
//ResultSet rs = cstmt.getResultSet();
while(rs.next())
{
System.out.println(rs.getString(2));
}
*/
}
}