(一)学习总结
1.用思维导图对本周的学习内容进行总结。
2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。
executeQuery()方法
执行数据库更新的SQL语句,如INSETR、UPDATE、DELETE等语句,返回更新的记录数。
conn = JDBCUtils.getConnection(1);
stmt = conn.createStatement();
String sql = "select no,type,age,number,price from pet";
rs = stmt.executeQuery(sql);
executeUpdate()方法
执行数据库查询操作,返回一个结果集对象。
conn = JDBCUtils.getConnection(1);
String sql = "insert into pet(no,type,age,number,price) values (?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pet.getNo());
pstmt.setString(2, pet.getType());
pstmt.setString(3, pet.getAge());
pstmt.setString(4, pet.getNumber());
pstmt.setString(5,pet.getPrice());
int num = pstmt.executeUpdate();
PreparedStatement接口和Statement接口的不同:
·PreparedStatement 实例包含已编译的 SQL 语句。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。
·statement每次执行sql语句,相关数据库都要执行sql语句的编译
·由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement对象,以提高效率。
(二)实验总结
实验内容:
使用JDBC实现实验七的宠物商店
完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
宠物超市系统如下:
1.遇到问题:数据库连接不上TCP/IP
解决问题:打开所有程序里的SQL sever配置管理器,找到TCP/IP并启动。如下图:
2.遇到问题:数据库连接用代码如何实现?代码如下:
/*
* 连接SQLSERVER数据库
*/
private static Connection getConnectionSQL()
{
Connection conn=null;
final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
final String DBURL = "jdbc:sqlserver://localhost:1433;databaseName=fruit";
final String DBUSER = "treeroot";
final String DBPASS = "123";
try {
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
3.遇到问题:用java实现查询连接数据库的操作:
try{
conn = JDBCUtils.getConnection(1);
stmt = conn.createStatement();
String sql = "select number,name,price,unit from fruit";
rs = stmt.executeQuery(sql);
while(rs.next()){
AnimalItem thisFruit = new AnimalItem();
thisFruit.setNumber(rs.getString("number"));
thisFruit.setName(rs.getString("name"));
thisFruit.setPrice(rs.getDouble("price"));
thisFruit.setUnit(rs.getString("unit"));
list.add(thisFruit);
}
4.出现问题:关闭连接对象:
/*
* 关闭连接对象
*/
public static void close(Connection conn)
{
if(conn!=null)
{
try
{
conn.close();
} catch(SQLException e)
{
e.printStackTrace();
}
conn = null;
}
}
}
5.出现问题:在数据库里完成创建表:
create database pet
on
(name=product_data,
filename='d:\fruit_data.mdf')
log on
( name=product_log,
filename='d:\fruit_log.ldf')
use pet
create table pet(
number varchar(10) primary key,
name varchar(20),
price numeric(6,2),
unit varchar(4)
)
insert into pet
values('2','泰迪',700,'30')
insert into pet
values('1','黄狗',200,'35')
select * from pet
(三)代码托管
链接:https://git.oschina.net/hebau_cs15/java-cs02mhj.git