zoukankan      html  css  js  c++  java
  • 《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,解决了问题

    三、代码托管

    代码托管

  • 相关阅读:
    选择器的用处
    全栈工程师基础知识与笔记
    9.13日笔记
    9.12笔记
    9.11Css
    学习笔记
    9.10HTLM
    redis和memcached的区别(总结)
    OO第四次博客作业
    OO第三次博客作业
  • 原文地址:https://www.cnblogs.com/wyf20175217/p/10786138.html
Copyright © 2011-2022 走看看