JAVA 访问MySQL数据库 JDBC-MySQL


写在前面


阅读人群:刚学习JAVA的人群

应该具备的背景知识:mysql数据库

当前版本:

- jdk-15.0.2

- jre1.8.0_281

这个教程应该在之后的版本都有效。


知识梳理


JDBC-MySQL介绍

每个编程语言都会提供其访问数据库的接口,java提供JDBC-MySQL驱动来访问MySQL。而这个驱动在一个文件里,需要我们去官网下载。

JDBC-MySQL安装

下载链接: http://dev.mysql.com/downloads/connector/j

注:如果你电脑上已经有了JDBC-MySQL,可以跳过本节。

进入下载连接

1. 在"Select Operating System"下面选择Platform Independent

2. 随便选哪个文件,点击右边的"Download"

3. 点击“No thanks, just start my download”

4. 把压缩文件中名为mysql-connector-java-8.0.25.jar的文件解压(当然你的版本号可能不同)

JDBC-MySQL中的类

Connection类:维持与数据库的连接(好比一个游戏客户端,你每次打开都要登录,关了客户端再打开就要重新登陆),这个Connection就是用来保存登录信息的。

Statement类:用来执行SQL语句,需要用Connection对象创建

ResultSet类:用来接收查询语句的结果

实现

请提前了解try/catch语句的作用

注意,过程中会有很多异常抛出的语句,这些都是必要的。

但还是请专注于核心代码,报错之前你甚至可以直接无视catch语句内的代码和注释,因为那本就是助你查找错误的。

请一步一步跟着做,前一步没调通后面是一定会报错的,而且增加你查找错误的难度。

准备

如果你使用IDE(如eclipse,IDEA),将mysql-connector-java-8.0.25.jar文件导入到外部库里

如果你没有使用IDE,将mysql-connector-java-8.0.25.jar文件解压到项目文件夹里(现在的大多数解压文件都支持解压jar文件),保证com文件夹和你编写的java文件在同一个目录

还是建议使用IDEA,会省掉很多事情

初始化

导入类,这里你也可以挨着写要导入的类

import java.sql.*;

下面这一步你可以理解为加载驱动。

try{

Class.forName("com.mysql.jdbc.Driver");

}

catch(Exception e){

// 如果这里的代码执行,说明你的准备工作没做好,这种情况下你后面的代码全会报错

// 检查前面的准备操作,直到这里不报错再写后面的代码

System.out.println("加载驱动失败!");

System.out.println(e);

}

上面代码没有抛出异常的话,证明你的准备工作做得很到位~

建立连接

这里假设你的mysql服务器在本地,端口为3306,要连接的数据库名称为database。

如果不是,将localhost改为服务器的ip地址,3306改为服务器上数据库的端口,database改为数据库名。

Connection con;

String url = "jdbc:mysql://localhost:3306/database";

String username = ""; //这里输入你的数据库用户名

String password = ""; //你的密码

try{

con = DriverManager.getConnection(url,user,password);

}

catch(Exception e){

// 这里的代码执行说明连接失败

// 检查前面的驱动加载是否成功

// 检查url,username,password是否正确

System.out.println("连接失败");

System.out.println(e);

}

创建Statement对象

及其简单的一步

Statement statement = con.creatStatement();

执行查询语句

查询语句用到的是Statement对象的executeQuery()方法,返回一个ResultSet对象

ResultSet rs;

String sql = "";//sql写入要执行的查询语句

rs = statement.executeQuery(sql);

ResultSet对象的使用

rs.next() 获取下一行数据

刚获得rs时就得执行一次,才是获得第一行数据,不然啥都得不到。

如果获取到的行有数据,则返回true,否则,返回false,表示执行rs.next()之前就到了最后一行。

rs.getString(String column) 这个方法传入列名,获取当前行的该列名的String类型的值

其他方法很少用到,可以去官方文档里看

示例代码

try{

//假定获取的结果中有一列叫"name"

rs.next();

System.out.println(rs.getString("name"));

}

catch(Exception e){

System.out.println("出错了!");

System.out.println(e);

}

执行添加、更新、删除语句

修改语句用到的是Statement对象的executeUpdate()方法,返回的是你修改的行数。

String sql = "";

int num;

num = statement.executeUpdate(sql);

封装

为了更好的使用,减少代码量,我自己封装了一下(后面没有其他知识了,只有供参考的代码)

import java.sql.*;

public class MySQLtool {

public static Connection con;

public static Statement statement;

static void Init(String url, String username, String password) {

// 1. 加载驱动

try {

Class.forName("com.mysql.cj.jdbc.Driver");

} catch (Exception e) {

System.out.println(e);

return;

}

// 2. 连接数据库

try {

con = DriverManager.getConnection(url, username, password);

} catch (Exception e) {

System.out.println(e);

return;

}

}

// 查询

static public ResultSet Query(String sql) {

try {

return statement.executeQuery(s);

} catch (SQLException e) {

System.out.println(e);

return null;

}

}

// 修改

static public int update(String sql) {

// 执行语句

try {

return statement.executeUpdate(sql);

} catch (SQLException e) {

System.out.println(e);

return -1;

}

}

这样就可以MySQL.Init()初始化后,直接通过MySQL.Query()和MySQL.Update()来执行SQL语句了。

MySQLtool可能涉及到类方法的知识,可以先去看看,反正是学java躲不掉的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容