abb的knx的数据库下载⽅法_JDBC连接Mysql数据库详解JDBC(Java DataBase Connectivity),即Java数据库连接。简⽽⾔之,就是通过Java语⾔来操作数据库。
我们可以把JDBC理解成是官⽅定义的⼀套操作所有关系型数据库的规则,规则即接⼝。
也就是说,官⽅定义了⼀套操作所有关系型数据库的接⼝,然后让各个数据⼚商(Mysql、Oracle等)⽤实现类去实现这套接⼝,再把这些实现类打包(数据驱动jar包),并提供数据驱动jar包给我们使⽤。
我们可以使⽤这套JDBC接⼝进⾏编程,但是真正执⾏的代码是驱动jar包中的实现类。
为什么?因为JDBC是通过接⼝来调⽤⽅法的,当你导⼊了驱动jar包(实现类)后,那调⽤的⽅法肯定是实现类⾥⾯的⽅法。
⼀、Mysql驱动包下载
想要通过JDBC连接并操作Mysql数据库,我们需要下载⼀个Mysql数据库驱动jar包。
两种下载⽅式(点击链接可直接前往下载)
⽅式⼀:官⽹下载
⽅式⼆:Maven仓库下载
下载后的jar包是这样的(我的版本是8.0.15):
windows系统:
mysql-connector-java-8.0.15-bin.jar
Linux、Mac系统:
mysql-connector-java-8.0.15.jar
⼆、JDBC实现步骤
前提: 创建⼀个Java项⽬,在项⽬中新建⼀个libs⽬录(为了⽅便管理jar包,需要把jar包放在此⽬录下),在src⽬录下建⼀个包,包下前提:
再建⼀个类。
最终的⽬录结构是这样的:
注:把下载的jar包拷贝到项⽬的libs下,别忘了点击libs→右键→Add as Library(这才是真正导⼊jar包)。
具体步骤:
1、导⼊驱动jar包
2、注册驱动
3、获取数据库的连接对象
4、定义sql语句
5、获取执⾏sql语句的对象
6、执⾏sql并接收返回结果
7、处理结果
8、释放资源
实例:
package cn.tkr.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) throws Exception { //下⾯⽅法有不同的异常,我直接抛出⼀个⼤的异常
//1、导⼊驱动jar包
//2、注册驱动
Class.forName("sql.jdbc.Driver");
//3、获取数据库的连接对象
Connection con = Connection("jdbc:mysql://localhost:3306/sys", "root", "123456789");
//4、定义sql语句
String sql = "update Student set score = 99 where id = '10003' ";
//5、获取执⾏sql语句的对象
Statement stat = ateStatement();
//6、执⾏sql并接收返回结果
int count = uteUpdate(sql);
//7、处理结果
System.out.println(count);
//8、释放资源
stat.close();
con.close();
}
}
运⾏结果:
代码分析:
注册驱动是为了让程序知道,我们⽤的是哪个版本、哪个驱动包。
获取数据库的连接对象Connection,我们可以把这个对象理解成是Java代码与数据库之间的桥梁,将两者连接起来。
我们定义的sql语句,将来会通过⼀些操作发送给数据库执⾏。从⽽达到Java代码操作数据库的⽬的。
由于Connection是连接对象,⽆法直接执⾏。所以我们要通过ateStatement()来获取执⾏sql语句的对象Statement
通过Statement对象执⾏sql后,会返回⼀个int类型的数值,这个数值指的就是影响数据库表的⾏数。
最后,要对返回的结果进⾏处理,并释放资源(为了避免内存泄漏)
更新前的数据库(sys),Student表中的数据:
更新操作SQL语句:
update Student set score = 99 where id = '10003'
更新后的数据库(sys),Student表中的数据:
三、通过JDBC进⾏CRUD操作实例
在上⾯的实例代码中,其实还存在⼀个问题,如果代码在执⾏过程中出现异常(如:不到数据库,密码错误,sql语法错误等),就⽆法正常释放资源了。
那为了解决这个问题,我们不再直接抛出异常,⽽是使⽤try-catch-finally来处理异常,把释放资源的代码放到finally代码块中,这就保证了不管有没有出现异常,都能正常释放资源。
同时,也为了避免出现空指针异常,在进⾏释放资源前需要通过条件语句进⾏判断。
下⾯的这⼏个CRUD操作实例,我都会针对以上问题进⾏代码优化。
在演⽰操作实例之前,我们需要知道⼀下,执⾏sql语句的⽅法有哪些?
| 返回值类型 | ⽅法名 | 描述 | |--|--|--| | boolean | execute(Strng sql) | 可以执⾏任意的sql语句 | | int | executeUpdate(Strng sql) |可以执⾏DML(insert、update、delete)语句,DDL(create、alter、drop)语句 | | ResultSet | executeQuery() | 可以执⾏
DQL(select)语句 |
1、添加(插⼊)⼀条记录
实例:
package cn.tkr.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) { //下⾯⽅法有不同的异常,我直接抛出⼀个⼤的异常
Connection con = null;
Statement stat = null;
try{
//1、注册驱动
Class.forName("sql.jdbc.Driver");
//2、获取数据库的连接对象
con = Connection("jdbc:mysql://localhost:3306/sys", "root", "123456789");
//3、定义sql语句
String sql = "insert into Student value('10004','李⽩',21,59)";
//4、获取执⾏sql语句的对象
stat = ateStatement();
//5、执⾏sql并接收返回结果
int count = uteUpdate(sql);
//6、处理结果
System.out.println(count);
}catch (Exception e){
e.printStackTrace();
}finally {
if (con != null){ //避免空指针异常
//7、释放资源
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null){ //避免空指针异常
//7、释放资源
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
执⾏的sql语句:
insert into Student value('10004','李⽩',21,59)
添加记录后,Student表中的数据:
2、修改(更新)⼀条记录
替换上述实例代码中执⾏的sql语句:
update Student set age = 20,score = 100 where id = '10002'
修改记录后,Student表中的数据:
3、删除⼀条记录
替换上述实例代码中执⾏的sql语句:
delete from Student where id = '10001'
删除记录后,Student表中的数据:
4、查询表中的数据
实例:
package cn.tkr.jdbc;
import java.sql.*;下载mysql为什么下载不了
public class JDBCDemo {
public static void main(String[] args) { //下⾯⽅法有不同的异常,我直接抛出⼀个⼤的异常
Connection con = null;
Statement stat = null;
ResultSet rs = null;
try{
//1、注册驱动
Class.forName("sql.jdbc.Driver");
//2、获取数据库的连接对象
con = Connection("jdbc:mysql://localhost:3306/sys", "root", "123456789"); //3、定义sql语句
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论