一、学习内容
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
,解决了问题
三、代码托管
原文地址:https://www.cnblogs.com/wyf20175217/p/10786138.html
时间: 2024-10-30 17:08:18