Java 第八次作业

(一)学习总结#

1.思维导图##

2.执行executeUpdate()方法和executeQuery()方法中使用动态参数时,使用PreparedStatement接口而不使用Statement接口的原因##

  • PreparedStatement接口##

    • PreparedStatementStatement的子接口,属于预处理操作
    • executeUpdate()方法执行设置的预处理SQL语句
    • executeQuery()方法执行数据库查询操作,返回ResultSet
  • 具体事例##

Scanner input = new Scanner(System.in);
System.out.println("请输入学号:");  
 String no = input.next();
System.out.println("请输入姓名:");    
String name = input.next();
.......//加载驱动程序
try {   
    conn = DriverManager.getConnection(DBURL,DBUSER, DBPASS);  
    System.out.println("数据库连接成功");
    String sqlStr = "insert into student(Sno,Sname) values(?,?)";
   PreparedStatement  pstmt = conn.prepareStatement(sqlStr);
    pstmt.setString(1,no);      pstmt.setString(2,name);
    int len = pstmt.executeUpdate(); 
    System.out.println("更新了"+len+"条记录");
 } catch (SQLException e) {  
    System.out.println("数据库连接失败");      e.printStackTrace();
}
  • Statement接口##

    • executeUpdate(String sql)方法执行数据库的SQL语句,返回更新记录数
    • executeQuery(String sql)方法执行数据库查询操作,返回一个结果集对象
  • 具体实例##

public boolean queryAllData(String name, String password) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        boolean flag = false;
        ArrayList<LoginCheck> list = new ArrayList<LoginCheck>();
        try {
            conn = JDBCUtils.getConnectionSQL();
            stmt = conn.createStatement();
            String sql = "select name,password from SCHOOL where name = 'GHJ' and password = 'WELL,1234'";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                LoginCheck thisUser = new LoginCheck();
                thisUser.setName(rs.getString("name"));
                thisUser.setPassword(rs.getString("password"));
                list.add(thisUser);
                if (name.equals(thisUser.getName())
                && password.equals(thisUser.getPassword())) {
                    flag = true;
                }
            }
        } catch (Exception e) {
                e.printStackTrace();
        } finally {
            JDBCUtils.close(conn);
        }
        return flag;
    }

3.其他需要总结的内容。##

  • Eclipse连接sql server 2008的步骤
    • 先登录SQL 2008,选择Windows身份验证,点击连接
    • 右键数据库服务器,右键-属性-安全性,将登陆改为windows和sqlserver混合登陆。点击数据库右键属性,安全性里面选择混合登陆
    • 点击安全性进入登录名,右键-新建登录名
    • 在选择页一栏,常规一项,填写登录名、选择SQL Serve身份验证、填写密码、去除强制密码过期
    • 权限设置:在服务器角色一项,默认的是选择public,相当于游客,只有登录数据库权限。选择sysadmin,给角色管理员权限。点击确定
    • 测试连接,数据库服务器右键-注册,在身份验证里选择Sql Sever身份验证,填写用户名和密码,也就是刚才创建的用户名(root)和密码(root),点击测试
    • 右键连接,填写用户名和密码,点击连接,如果多出一个数据库服务器,表明连接成功

(二)实验总结#

1.使用JDBC实现实验七的宠物商店##

  • 程序设计思路##

    • 第一步,创建WelcomeFrame界面,点进入系统按钮进入宠物商店管理界面
    • 第二步,创建PetItem宠物类存放宠物属性,GUITools类对于界面组件显示的方法
    • 第三步,JDBCUtils类负责数据库连接和关闭操作以及取得一个数据库的连接对象
    • 第四步,AdminDao类是管理员数据访问类,AdminService类是对AdminDao类中的方法进行判断,AdminDialog类是对宠物商店管理界面的按钮组件功能进行实现,MainApp是运行项目类
  • 完成的界面如下##

  • SQLServer中相应的表格如下##

  • 类图结构##

  • 问题##

    • 连接不上数据库,eclipse这边更新的数据,sql server 相应的表内的数据不更新
  • 原因##

    • 改了数据库名字,没有及时更新JDBCUtils类中没有及时更新database名字
  • 问题2##

    • 开始发现点修改数据功能,程序无法运行,能运行后,修改数据时,又发现修改后的数据变化不对,价格,种类都变成了数量,
  • 原因##

    • AdminDao类中添加数据中的方法写错啦,价格和种类都是调用的getNumber方法
  • 问题##

    • sql server里创建的数据库内容看不到
  • 原因##

    • 应该提前打开sql server再去eclipse里打开导入的数据库,就可以看到创建的数据库内容

(三)代码托管#

代码链接##

https://git.oschina.net/hebau_cs15/hebau-cs01GHJ.gi

码云截图##

commit历史截图##

posted @ 2017-05-18 19:27  长长长长的街道  阅读(167)  评论(0编辑  收藏  举报