java链接mysql数据库,需要相应的jar包,一般我们使用的是mysql-connector-java-5.1.6-bin.jar (密码在下面)。而每个ide导入包的操作不一致,下面以ecplise为例,一般我们在项目目录中创建一个lib来存放各种导入的包 然后在项目中找到这个jar包,右键在build path 导入jar 包
包导入完毕,现在正是开始连接数据库,连接之前我们需要了解JDBC究竟是什么。
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制
我们可以通过JBDC来访问数据库的内容而不必去进行更加复杂的操作
JDBC作为可以作为连接Java应用程序与各种关系数据库的纽带,在带来便利的同时也存在的缺点,接下来我们谈谈他的优缺点
1、操作简洁:不必再继续使用各种复杂的操作
2、操作性强:JDBC支持多个数据库的链接, 可以使同一个应用程序链接多个数据库进行操作,只需添加驱动即可
3、通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
4、面向对象: 可以将JDBC封装成为一个类,直接调用就好
缺点如下:
1、链接数据存在速度问题
2、修改数据源,当我需要更换数据库时,由于各个链接数据库的驱动不一,修改较为麻烦
到这里,大概了解了一下JDBC 接下来我们将链接mysql数据库
首先我们新建一个数据库
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(24) NOT NULL,
`password` varchar(50) NOT NULL,
`sex` char(5) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`addtime` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
然后创建JDBC链接 话不多说了直接上代码
链接数据库 JDBC DbConn.java
"jdbc:mysql://localhost:3306/username?usecode=true&characterEncoding=utf-8"
前面是地址 ?后面是确定 字符集
package org.lan.db;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbConn {
// 编写获取数据库连接的方法:getConn()
public Connection getConn() {
Connection conn = null;
try {
// 1、加载MySQL数据库的驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2、(通过驱动类管理器DriverManager)获得一个数据库连接:con(三个参数:数据库的地址,用户名,密码)
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/username?usecode=true&characterEncoding=utf-8", "root", "123123");
System.out.println(conn.getMetaData().getURL());
return conn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
封装了一个USer.java
package org.lan.modal;
import java.time.LocalDateTime;
public class User {
private String name;
private String password;
private String sex;
private String email;
private LocalDateTime addtime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public LocalDateTime getAddtime() {
return addtime;
}
public void setAddtime(LocalDateTime addtime) {
this.addtime = addtime;
}
public User() {
super();
}
public User(String name, String password, String sex, String email, LocalDateTime addtime) {
super();
this.name = name;
this.password = password;
this.sex = sex;
this.email = email;
this.addtime = addtime;
}
}
然后我简单的写了一个给数据库添加数据的代码,用户注册操作 UserInfo.java
package org.lan.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.time.format.DateTimeFormatter;
import org.lan.db.DbConn;
import org.lan.modal.User;
public class UserInfo {
// 特定数据库的连接(会话)。 执行SQL语句并在连接的上下文中返回结果。
private static Connection conn = null;
// SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。
private static PreparedStatement pst = null;
public UserInfo() {
// 链接已经封装好的数据库jdbc链接
conn = new DbConn().getConn();
}
// 增加数据
public static boolean add(User user) {
try {
// 这里,我需要转换一下时间为String类型
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String localTime = df.format(user.getAddtime());
// 使用sql语句
pst = conn.prepareStatement("insert into user" + "(name,password,sex,email,addtime)" + "value(?,?,?,?,?)");
// 添加姓名
pst.setString(1, user.getName());
// 添加密码
pst.setString(2, user.getPassword());
// 添加性别
pst.setString(3, user.getSex());
// 添加邮箱
pst.setString(4, user.getEmail());
// 添加当前注册时间
pst.setString(5, localTime);
// 添加入数据库
pst.executeUpdate();
// 添加成功返回true
return true;
} catch (Exception e) {
e.printStackTrace();
// 添加失败返回false
return false;
}
}
}
现在测试一下自己的代码的正确率 新建一个测试的类 TestMain.java
package org.lan.test;
import java.time.LocalDateTime;
import org.lan.modal.User;
import org.lan.server.UserInfo;
public class TestMain {
public static void main(String[] args) {
UserInfo ui = new UserInfo();
boolean add = ui.add(new User("12312", "123123", "男", "20152@qq.com", LocalDateTime.now()));
System.out.println(add);
}
}
测试通过,
mysql包 密码 7y2u