Java 访问 MySQL
通过使用JDBC让JAVA程序连接到数据库,并完成增删改查等操作。
大致步骤:
1、Mysql与eclipse、jdk等的下载(以及环境变量配置等,这里不做详细说明)。
2、将mysql-connector-java-5.1.8-bin.jar添加到eclipse、将mssql-jdbc-6.2.2.jre7.jar 或 mssql-jdbc-6.2.2.jre8.jar添加到eclipse项目。(注意是与要连接数据库的JAVA程序同一个项目)。
3、创建要连接的数据库与表。
4、写JAVA程序连接数据库,完成操作。
2、Java 连接 MySQL 数据库的常用方法
//以下是复制了学校给的操作步骤,最新版本当然不是5.1.8
①将mysql-connector-java-5.1.8-bin.jar添加到eclipse。
接下来进入MySQL官网https://dev.mysql.com/downloads/connector/j/下载最新的MySQL驱动程序,作者已经下载了 mysql-connector-java-5.1.8-bin.jar 的驱动程序文件。
作者的 java 程序安装在 C:\Program Files (x86)\Java\jdk1.7.0_07 文件夹中。由于安装 java程序时,会默认生C:\ProgramFiles(x86)\Java\jre7\lib\ext 文件夹,进入该文件夹,将mysql-connector-java-5.1.8-bin.jar 复制一份放入其中。
在 Eclipse 中,鼠标选中项目工程,右键点击 Build Path,选择 Configure Build Path,会跳 出 一 个 属 性 框 图 。 选 择 Java Build Path 下 的 Libraries , 查 看 是 否 有mysql-connector-java-5.1.8-bin.jar。如果没有,点击Add External JARs,浏览到JDBC的MySQL驱动的 jar 包,点击确定,将其导入到项目中。
②将mssql-jdbc-6.2.2.jre7.jar 或 mssql-jdbc-6.2.2.jre8.jar添加到eclipse
在使用 JDBC 程序连接 SQL Server 数据库时需要一个驱动程序来提供连接支持,微软
为 JDBC 访问 SQL Server 提供了一个驱动程序-Microsoft JDBC Driver for SQL Server。作者
5
6
下 载 了 SQL Server 的 JDBC 驱 动 程 序 6.2.2 版 本 sqljdbc_6.2.2.0_chs.exe 。 运 行
sqljdbc_6.2.2.0_chs.exe 程序,弹出一个解压窗体,点击【Unzip】按钮,可以将安装程序解
压到当前目录下。解压后的目录中有 mssql-jdbc-6.2.2.jre7.jar 和 mssql-jdbc-6.2.2.jre8.jar,两
者 功 能 一 样 , 只 是 不 同 的 版 本 。 选 择 其 中 一 个 jar 包 , 复 制 到 C:\Program Files
(x86)\Java\jre7\lib\ext 文件夹下。
在 Eclipse 中,鼠标选中项目工程,右键点击 Build Path,选择 Configure Build Path,会
跳出一个属性框图。选择 Java Build Path 下的 Libraries,点击 JRE System Library,查看是否
有 mssql-jdbc-6.2.2.jre7.jar 或 mssql-jdbc-6.2.2.jre8.jar。如果没有,点击 Add External JARs,
浏览到 JDBC 的 MySQL 驱动的 jar 包,点击确定,将其导入到项目中。
3、创建要连接的数据库与表
启动 MySQL。
Enter password:
接下来创建 InfoDb 数据库:
create database InfoDb;
然后,创建 student 表:
use InfoDb;
create table student(sNo varchar(8) primary key,
sName varchar(8) not null,
sSex varchar(4),
sAge int,
sSpecialty varchar(20),
sAddress varchar(50)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
插入数据:
INSERT INTO student VALUES(‘1’,‘李平’,‘男’, 22, ‘计算机应用技术’, ‘湖南’);
INSERT INTO student VALUES(‘2’,‘王丫’,‘女’, 19, ‘信息安全’, ‘广西’);
INSERT INTO student VALUES(‘3’,‘钟信’,‘男’, 21, ‘网络工程’, ‘重庆’);
INSERT INTO student VALUES(‘4’,‘木林’,‘女’, 20, ‘信息安全’, ‘北京’);
INSERT INTO student VALUES(‘5’,‘李文’,‘男’, 20, ‘计算机应用技术’, ‘上海’);
INSERT INTO student VALUES(‘6’,‘丽思’,‘女’, 18, ‘网络工程’,‘大连’);
如图:
4、写JAVA程序连接数据库,完成操作
//连接语句
public class DbProcess{
Connection connection = null;
ResultSet rs = null;
//mysql数据库url
String userMySql="root";
String passwordMySql="";
String urlMySql = "jdbc:mysql://localhost:3306/InfoDb?user="
+userMySql+"&password="+passwordMySql + "&useUnicode=true&characterEncoding=gbk";
//sqlserver数据库url
//String urlSqlServer = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=InfoDb";
public DbProcess() {
try {
//mysql数据库设置驱动程序类型
Class.forName("com.mysql.jdbc.Driver");
System.out.println("mysql数据库驱动加载成功");
//sqlserver数据库设置驱动程序类型
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//System.out.println("sqlserver数据库驱动加载成功");
}
catch(java.lang.ClassNotFoundException e) {
e.printStackTrace();
}
}
public void connect(){
try{
//mysql数据库
connection = DriverManager.getConnection(urlMySql);
//sqlserver数据库
//connection = DriverManager.getConnection(urlSqlServer);
if(connection!=null){
System.out.println("数据库连接成功");
}
}
catch(Exception e){
e.printStackTrace();
}
}
public void disconnect(){
try{
if(connection != null){
connection.close();
connection = null;
}
}
catch(Exception e){
e.printStackTrace();
}
}
public ResultSet executeQuery(String sql) {
try {
System.out.println("executeQuery(). sql = " + sql);
PreparedStatement pstm = connection.prepareStatement(sql);
// 执行查询
rs = pstm.executeQuery();
}
catch(SQLException ex) {
ex.printStackTrace();
}
return rs;
}
//插入
//executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。
//executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句
//以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
//执行增、删、改语句的方法
public int executeUpdate(String sql) {
int count = 0;
connect();
try {
Statement stmt = connection.createStatement();
count = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
disconnect();
return count;
}
}
//执行代码过长见下一篇博客:连接如下
> https://blog.csdn.net/King0237/article/details/111479100
最终结果如图:
增删改查均可,实验成功。