• JAVA技术第八次实验 计科1501 胡开辉


    (一)学习总结

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

    2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。

    方法executeQuery
    用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。

    如:
    //加载数据库驱动

    Class.forName("com.MySQL.jdbc.Driver");
    //使用DriverManager获取数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
    "root","1234");
    //使用Connection来创建一个Statment对象
    Statement stmt = conn.createStatement();
    //执行查询语句
    ResultSet rs =stmt.executeQuery("select * from teacher");
    //把查询结果输出来
    while (rs.next())
    {
    System.out.println(rs.getInt(1) + "/t" + rs.getString(2));
    }
    2>方法executeUpdate
    用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
    如:
    //加载数据库驱动
    Class.forName("com.mysql.jdbc.Driver");
    //使用DriverManager获取数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
    "root","1234");

    //使用Connection来创建一个Statment对象
    Statement stmt = conn.createStatement();
    //执行DML语句,返回受影响的记录条数
    return stmt.executeUpdate(sql);

    3>方法execute:
    可用于执行任何SQL语句,返回一个boolean值,表明执行该SQL语句是否返回了ResultSet。如果执行后第一个结果是ResultSet,则返回true,否则返回false。但它执行SQL语句时比较麻烦,通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了。
    如: //加载驱动
    Class.forName(driver);
    //获取数据库连接
    conn = DriverManager.getConnection(url , user , pass);
    //使用Connection来创建一个Statment对象
    stmt = conn.createStatement();
    //执行SQL,返回boolean值表示是否包含ResultSet
    boolean hasResultSet = stmt.execute(sql);
    //如果执行后有ResultSet结果集
    if (hasResultSet)
    {

                //获取结果集 
                rs = stmt.getResultSet();
    
                //ResultSetMetaData是用于分析结果集的元数据接口 
                ResultSetMetaData rsmd = rs.getMetaData();
                int columnCount = rsmd.getColumnCount();
                //迭代输出ResultSet对象
    
                while (rs.next())
    
                {//依次输出每列的值
                    for (int i = 0 ; i < columnCount ; i++ ) 
                    {
    
                        System.out.print(rs.getString(i + 1) + "/t");
                    }
                    System.out.print("/n");
                } 
            }
            else 
            {
                System.out.println("该SQL语句影响的记录有" + stmt.getUpdateCount() + "条");
            } 
    

    (二)实验总结

    实验内容:

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

    完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
    格式如下:

    程序设计思路:将实验七中的数据类都转换成Pet数据库中的表,建立JDBC类,连接数据库,对数据库中的数据进行读取放在ArrayList集合中,进行数据的查找添加删除,并进行对数据库内容的修改

    问题1:所有对数据的查找添加删除出现问题

    原因:在数据库中,数据类型的定义为char类型,如果所输入的数据或存入数据不能达到所定义的位数,会遇到的问题。

    解决方案:将数据库对数据定义的类型为varchar型,字符串长度设置相对较小

    (三)代码托管(https://git.oschina.net/hebau_cs15/shiyanba.git)

  • 相关阅读:
    PHP 学习1- 函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
    ja_charity模板研究
    迭代创建级联目录
    迭代和递归的区别
    递归删除目录
    PHP递归仿DOS的tree命令
    深入理解递归
    wamp默认函数嵌套98层,否则报Fatal error: Maximum function nesting level of '100' reached, aborting!
    静态static方法中调运非静态方法
    微信支付05
  • 原文地址:https://www.cnblogs.com/hukauihui/p/6874475.html
Copyright © 2020-2023  润新知