教学导入:
提问:常见的数据查询功能如何完成?
引入JDBC的作用及常见接口:Connect、Statement、ResultSet
知识点:
在关系数据库库中查询数据。Statement、ResultSet接口的使用
访问数据库的步骤:
连接到一个数据源,如一个SQLServer数据库系统。
发送查询和更新的语句到该数据库系统。
获取和处理由上述访问数据库得到的结果,返回给程序。
案例:Statement、ResultSet接口编写数据查询功能:
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
publicclass TestConnect {
publicstaticvoid main(String[] args) {
try {
Connection con;
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost;databaseName=salary", "sa",
"12345");
java.sql.DatabaseMetaData dma = con.getMetaData();
System.out.println("驱动程序" + dma.getURL());
System.out.println("驱动程序" +dma.getDriverName());
System.out.println("版本" +dma.getDriverVersion());
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from teacherinfo");
boolean hasData =rs.next();
if (hasData)
System.out.println(rs.getString(1));
// System.out.println(rs.getString("teachername"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码运行完毕:可以得到第一行第一列的值,00001.
分析步骤:
第一步:在SQLServer中输入select语句,成功运行查看数据后,将SQL语句粘贴到Java代码中。
通过Statement 的executeQuery方法得到查询结果集对象
第二步:结果集对象的使用
游标指向结果集第一行,判断是否存在这一行,存在则依次获取这一行中的每个单元格数据。
练习:
紧接上述案例:
第三步:获取第二行的数据
第四步:如何通过循环获取全部数据
可能遇到的错误提示:
1.com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行。
这是因为,没有调用ResultSet对象的next方法,游标指向空行;或者结果集为空。
测试题:
jdbc编程访问salary数据库,在控制台中输出:
输出“张三”的教师信息,包括张三的工号、姓名、年龄、性别、职称。
输出“张三”的姓名和年龄。
编程:输出工号为“00099”的教师全部信息,如果不存在,输出“不存在”
输出教师中最小年龄的教师姓名
输出所有姓“张”的教师姓名
Key:
"Select teachername from teacherinfo where age =(Select min(age)FROM teacherinfo)"
"Select * from teacherinfowhere teachername like '张%'"

