《JAVA程序设计》_第九周学习总结

一、学习内容

1.数据库的建立、配置

  • 在官网先下载好MySQL、navicat for MySQL、XAMPP、MySQL-connecter
  • 在XAMPP中点击start开启MySQL

  • 在navicat for MySQL中点击连接,输入信息后确定

  • 在连接名处右击,创建新数据库,输入数据库名,字符集和校对均选择gb2312...

  • 处右击,输入表的信息

  • 点开创建的mess表输入信息,按tab键可快速换行

  • 将MySQL-connecter添加到IDEA的module中

  • 输入以下代码,检测数据库是否连接
import java.sql.*;
public class GetDBConnection {
    public static Connection connectDB(String DBName,String id,String p) {
        Connection con = null;
        String
                uri = "jdbc:mysql://localhost:3306/"+DBName+"?serverTimezone=GMT%2B8&characterEncoding=utf-8";
        try{  Class.forName("com.mysql.cj.jdbc.Driver");
        }
        catch(Exception e){}
        try{
            con = DriverManager.getConnection(uri,id,p); 
        }
        catch(SQLException e){}
        return con;
    }
}

2.数据库的查询

1.向数据库发送SQL查询语句

  • 首先使用Statement声明一个SQL语句对象,然后让已创建的连接对象con调用方法createStatement()创建这个SQL语句对象,代码如下:
try{Statement sql = con.createStatement();
}
catch(SQLException e){}

2.处理查询结果

  • 有了SQL语句对象后,这个对象就可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。也就是说SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成。
ResultSet rs = sql.executeQuery("SELECT * FROM students");
  • 结果集rs的列数是4列,刚好和students的列数相同
  • 而对于:ResultSet rs = sql.executeQuery("SELECT name,height FROM students");ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,获得一行数据后,ResultSet对象可以使用getXxx方法获得字段值(列值),将位置索引(第一列使用1,第二列使用2等)或列名传递给getXxx方法的参数即可。
  • 无论字段是何种属性,总可以使用getString(int columnIndex)或getString(String columnName)方法返回字段值的串表示

3.关闭连接

  • ResultSet对象和数据库连接对象(Connection对象)实现了紧密的绑定,一旦连接对象被关闭,ResultSet对象中的数据立刻消失。这就意味着,应用程序在使用ResultSet对象中的数据时,就必须始终保持和数据库的连接,直到应用程序将ResultSet对象中的数据查看完毕。如果在代码ResultSet rs = sql.executeQuery("SELECT * FROM students");之后立刻关闭连接:con.close();,程序将无法获取rs中的数据。

3.控制游标

  • 为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。

Statement stmt = con.createStatement(int type ,int concurrency);

4.条件与排序查询

5.更新、添加与删除操作

  • 更新
update 表 set 字段 = 新值 where <条件子句>
  • 添加

insert into 表(字段列表) values (对应的具体的记录)insert into 表 values (对应的具体的记录)

  • 删除
delete from 表名 where <条件子句>

二、学习中的问题及解决方法

问题1:在连接数据库时出现以下问题

解决1:上网查询、询问同学后发现是,module里没有添加MySQL-connecter

问题2:解决了上述问题后发现还是连接不了

解决2:参考hy同学的博客zxy同学的博客解决了问题,是时区不对,需要在这里加上?serverTimezone=GMT%2B8代码

问题3:在运行Example11_3时出现的返回空值的问题

解决3:调试了好久,发现rs的值为空,没有进入while循环,最后突然发现表中有汉字,于是在建立连接的代码中加入了characterEncoding=utf-8,解决了问题

三、代码托管

代码托管

猜你喜欢

转载自www.cnblogs.com/wyf20175217/p/10786138.html