关于mysql/oracle数据库的jdbc连接及调用

本博文开发工具为eclipse用来进行java源代码编写,主要是针对mysql、oracle与java中数据连接接口jdbc,在从java中怎么去调用进行代码编写。
mysql驱动包oracle驱动包

创建Properties文件

在所需要的src项右击打开,展开目录下的new,在new下继续展开后点击File。
在这里插入图片描述
点击后,在File name 中取个名字 但是注意 文件后缀名为properties,点击finish。
后缀名
点击所创建的properties,将连接的四要素以键值对的形式编写,注意结尾不许要分号,换行即可,使用哪种数据库就用对应 的四要素,不需要的需注释(properties中整行注释为首处加#)

//mysql连接四要素
Driver=com.mysql.jdbc.Driver//mysql连接驱动
Url=jdbc:mysql://localhost:3306/test//mysql连接地址,后面test为数据库名
Name = root//端口连接账号
Password = root//端口连接密码

//oracle连接四要素
driver=com.oracle.jdbc.Driver//oracle连接驱动
url=jdbc:oracle:thin://localhost:3306/test//oracle连接地址,后面test为数据库名
name=root//端口连接账号
pass=root//端口连接密码

编写JDBC连接接口

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class UtilJdbc {
	/*
	0. 设置数据源的四要素:驱动、连接、用户名、密码
	*/
	private static String DRIVER;
	private static String URL ;
	private static String NAME;
	private static String PASSWORD ;
	/*
	1. 加载数据库驱动
	*/
	static {
		try {
			//1.加载外部的db.properties文件
			InputStream is = UtilJdbc.class.getResourceAsStream("/test.properties");
			//2.实例化一个properties对象
			Properties prop = new Properties();
			//3.properties对象加载is流
			prop.load(is);
			//4.通过properties对象,获得db.properties文件中的值
			DRIVER = prop.getProperty("Driver");
			URL = prop.getProperty("Url");
			NAME = prop.getProperty("Name");
			PASSWORD = prop.getProperty("Password");
		
			//加载驱动
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 2. 获得数据库连接
	 */
	public final static Connection getConnection() {
		Connection con =null;
		try {
			//利用Connection接收地址,用户名,密码
			con= DriverManager.getConnection(URL, NAME, PASSWORD);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
	/**
	 * 3. 关闭数据库连接,释放资源---运用重载方便调用
	 */
	public static void close(Connection con, PreparedStatement pstmt, ResultSet rs){
		try {
			if (con != null) {
				con.close();
			}
			if (pstmt != null) {
				pstmt.close();
			}
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void close(Connection con, PreparedStatement pstmt) {
		close(con, pstmt, null);
	}

	public static void close(Connection con){
		close(con, null, null);
	}
}

创建mysql数据库

注意数据库中表中的列名和各个列名的数据类型及约束,看以下简单的数据库表(mysql数据库为例)

idINT PRIMARY KEY AUTO_INCREMENT编号,主键,自增
unameVARCHAR(20) NOT NULL UNIQUE用户名,非空,唯一
upassVARCHAR(65) NOT NULL密码,非空
statusINT DEFAULT 1状态,默认为1,1为启用,0为禁用
regtimeTIMESTAMP DEFAULT NOW()当前时间

创建并且封装entity实体类

根据数据库的数据类型设置java属性的数据类型,注意使用toString()重写

import java.util.Date;
public class User {
	private Integer uid;//id
	private String uname;//用户名
	private String upass;//密码
	private Integer status;//状态
	private Date regtime;//注册时间
	/**
	 * 构造方法
	 */
	public User() {
		super();
	}
	public User(int uid) {
		super();
		this.uid = uid;
	}
	public User(int uid, String uname) {
		super();
		this.uid = uid;
		this.uname = uname;
	}
	public User(int uid, String uname, String upass) {
		super();
		this.uid = uid;
		this.uname = uname;
		this.upass = upass;
	}
		public User(int uid, String uname, String upass, Integer status) {
		super();
		this.uid = uid;
		this.uname = uname;
		this.upass = upass;
		this.status = status;
	}
	public User(int uid, String uname, String upass, Integer status, Date regtime) {
		super();
		this.uid = uid;
		this.uname = uname;
		this.upass = upass;
		this.status = status;
		this.regtime = regtime;
	}
	/**
	 * get,set方法,封装属性,开放方法
	 */
	public int getUid() {
		return uid;
	}
	public void setUid(int uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpass() {
		return upass;
	}
	public void setUpass(String upass) {
		this.upass = upass;
	}
		public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public Date getRegtime() {
		return regtime;
	}
	public void setRegtime(Date regtime) {
		this.regtime = regtime;
	}
	@Override
	public String toString() {
		return "User [uid=" + uid + ", uname=" + uname + ", upass=" + upass + ", status=" + status + ", regtime="
				+ regtime + "]";
	}
}

创建dao工具包,存放公共类

在这演示添加用户和查询用户方法,注意MD5()为数据库mysql一种加密方式

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 对User实体类进行CURD
 * -- 实际就是对tb_user表进行CURD
 * @author Administrator
 *
 */
public class UserDao {
	private Connection con = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;
	
	/**
	 * 增加操作
	 * @param user
	 * 接收一个User对象,将对象添加到数据库表中
	 */
	public int addUser(User user) {
		// 定义要执行的SQL语句
		String sql = "INSERT tb_users(`uname`, `upass`) VALUES('"+ user.getUname() +"', MD5('"+ user.getUpass() +"'))";
		// 设置
		int n = 0;
		try {
			//通过DBUtis类中的getConnection方法获得与数据库的连接
			con = UtilJdbc.getConnection();
			//预编译执行上面定义的SQL语句(不是真正执行)
			ps = con.prepareStatement(sql);   //预编译
			//执行SQL
			n = ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭资源
			UtilJdbc.close(con, ps);
		}
		return n;
	}
	/**
	 * 查询操作
	 * -- 查询表中所有记录
	 */
	public List<User> getAllUser(){
		String sql = "select * from tb_users";
		List<User> users = new ArrayList<User>();
		try {
			//获得连接
			con = UtilJdbc.getConnection();
			//执行sql
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();   //获得查询出来的结果集
			while(rs.next()) {
				int uid = rs.getInt("id");
				String userName = rs.getString("uname");
				String password = rs.getString("uname");
				int status = rs.getInt("status");
				Date regtime = rs.getDate("regtime");
				//实例化一个User对象,并添加到List集合
				users.add(new User(uid, userName, password, status, regtime));
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			UtilJdbc.close(con, ps, rs);
		}
		return users;
	}
}

编写测试类Test

实例化一个用户User,添加用户和密码

public class Test {
	public static void main(String[] args) {
		User user = new User();
		user.setUname("administrator");
		user.setUpass("123456");
				
		int n = new UserDao().addUser(user);
		if(n>0) {
			System.out.println("添加成功");
		}else {
			System.out.println("添加失败");
		}
	}
}

为了明显看List集合的,再添加一个用户,然后进行通过Test类进行查询

public class Test {
	public static void main(String[] args) {
//		User user = new User();
//		user.setUname("Tester");
//		user.setUpass("654321");
//		
//		int n = new UserDao().addUser(user);
//		if(n>0) {
//			System.out.println("添加成功");
//		}else {
//			System.out.println("添加失败");
//		}
		List<User> users = new UserDao().getAllUser();
		for (User user : users) {
			System.out.println(user);
		}
	}
}

查询结果

mysql里面的数据库数据,注意upass列,是通过MD5()进行加密的
在这里插入图片描述
eclipse中控制台查询结果
在这里插入图片描述

注意点:

1.导包时不要导错;
2.MD5()加密方式是mysql里面对数据的一种加密方式;
3.实体类中注意要重写;
4.添加数据时,注意数据库uname是有唯一约束的,所有不能有同样的用户名进行添加,否则会报错;
5.查询多条用集合接收,查询单条用对象接收即可;
6.一定要导入驱动包,否则会报错,下载:mysql驱动包oracle驱动包
7.oracle与mysql不同点就是Properties文件里面连接地址不一样,还有就是导入的驱动包不一样,其他一样
8.数据库出现乱码的问题,主要是因为没有在创建表的时候加UTF-8,在表后添加:ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
在这里插入图片描述
9.主键是不可重复的,在编写sql语句的时候如果是添加id可使用default。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值