java JDBC链接mysql数据库

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值