java第八次作业

本文介绍了JDBC在宠物商店系统的实际应用,包括使用PreparedStatement接口优化SQL执行过程,解决数据库连接问题,以及通过具体代码示例展示了如何实现数据库的查询操作。

(一)学习总结

1.用思维导图对本周的学习内容进行总结。

1081361-20170517230225603-1815595384.jpg

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画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
宠物超市系统如下:
1081361-20170517232512353-548768369.png

1081361-20170517232527619-1737750104.png

1.遇到问题:数据库连接不上TCP/IP
解决问题:打开所有程序里的SQL sever配置管理器,找到TCP/IP并启动。如下图:
1081361-20170517231348088-1728285641.png
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
1081361-20170518101215994-2140752070.png

转载于:https://www.cnblogs.com/mahaojia/p/6870110.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值