利用JDBC连接数据库以及单例模式

JDBC(Java DataBase Connection):Java连接数据库技术

步骤:

1.下载对应版本的驱动包

2.在项目中引入mysql的数据库驱动包

3.开始编码[天龙八部]

4.使用Statement对象

5.使用PreparedStatement预编译对象



天龙八部:

1)装载驱动

2)获得连接

3)定义SQL

4)获得编译对象[预编译对象/参数赋值]

5)执行SQL

6)处理结果

7)关闭资源


查询数据库的数据(编译对象):

public static void selectData() {
		try {
			//1、装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//2.定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//3.定义账号和密码
			String user="root";
			String password="123456";
			//4.获得连接对象
			Connection con=DriverManager.getConnection(url, user, password);
			//5.定义sql语句
			String sql="select * from emp";
			//6.获得sql 语句的编译对象
			Statement st=con.createStatement();
			//7.编译并执行sql,如果是查询语句,则返回结果集
			ResultSet rs=st.executeQuery(sql);
			//如果结果集中有数据,则依次取出
			while(rs.next()) {
				int empno=rs.getInt("empno");
				String ename=rs.getString("ename");
				String job=rs.getString("job");
				System.out.println(empno+" "+ename+" "+job);
			}
			
			
			
			con.close();
			rs.close();
			con=null;
			rs=null;
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}
	}
	

 查询数据库的数据(预编译对象):

	public static void selectData1(String userName,String userPwd) {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号密码
			String user ="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url,  user, password);
			//定义sql语句
			String sql="select * from user where userName=? and userPwd=?";
			//获取预编译对象
			PreparedStatement ps=cn.prepareStatement(sql);
			//设置sql语句中参数的值
			ps.setString(1, userName);
			ps.setString(2, userPwd);
			//执行SQL语句
			ResultSet rs=ps.executeQuery();
			if(rs.next()) {
				System.out.println("查看表中有这个数据");
			}else {
				System.out.println("表中没有这个数据");
			}
			
			//关闭连接,释放资源
			cn.close();
			rs.close();
			cn=null;
			rs=null;
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		
	}

修改数据库的数据(编译对象):

public static void updataData() {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号密码
			String user="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="update emp set sal=1000 where empno=7369";
			//获得sql的编译对象
			Statement st=cn.createStatement();
			//编译sql语句
			int t=st.executeUpdate(sql);
			if(t==1) {
				System.out.println("修改数据成功");
				}else {
					System.out.println("修改数据失败");
				}
			//关闭连接,释放资源
			cn.close();
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		//
	}
		

修改数据库的数据(预编译对象):

public static void updataData1(String userPwd) {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号密码
			String user="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="update user set userPwd =? where userName='lisi'";
			//获取预编译对象
			PreparedStatement ps=cn.prepareStatement(sql);
			//设置sql语句中参数的值
//			ps.setString(1, userName);
			ps.setString(1, userPwd);
			//执行sql语句
			int t=ps.executeUpdate();
			if(t==1) {
				System.out.println("更改数据成功");
				}else {
					System.out.println("更改数据失败");
				}
			//关闭连接,释放资源
			cn.close();
			cn=null;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	};

向数据库里增加数据(编译对象):

public static void addData() {

		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号和密码
			String user="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="insert into emp values(6666,'xiaoxuhui','manager',null,'1996-10-15',15000,null,10)";
			//定义sql语句编译对象
			Statement st=cn.createStatement();
			//编译执行sql语句
			int t=st.executeUpdate(sql);
			if(t==1) {
				System.out.println("插入数据成功");
				}else {
					System.out.println("插入数据失败");
				}
			
			//关闭连接,释放资源
			cn.close();
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		
}

向数据库里增加数据(预编译对象):

public static void addData1(String userName,String userPwd) {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号和密码
			String user="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="insert into user(userName,userPwd) values(?,?)";
			//获取预编译对象
			PreparedStatement ps=cn.prepareStatement(sql);
			//设置SQL语句参数的值
			ps.setString(1, userName);
			ps.setString(2, userPwd);
			//执行sql语句
			int t=ps.executeUpdate();
			if(t==1) {
				System.out.println("插入数据成功");
				}else {
					System.out.println("插入数据失败");
				}
			//关闭连接,释放资源
			cn.close();
			cn=null;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

删除数据库的数据(编译对象):

public static void deleteData() {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号和密码
			String user ="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="delete from emp where empno=6666";
			//获取SQL语句的编译对象
			Statement st=cn.createStatement();
			//执行编译sql语句
			int t=st.executeUpdate(sql);
			if(t==1) {
				System.out.println("删除数据成功");
				}else {
					System.out.println("删除数据失败");
				}
			//关闭连接,释放资源
			cn.close();
			cn=null;
		} catch (Exception e) {
			
			e.printStackTrace();
		}
	}

删除数据库的数据(预编译对象):

public static void deleteData1(String userName,String userPwd) {
		
		try {
			//装载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//定义连接url
			String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
			//定义账号和密码
			String user="root";
			String password="123456";
			//获取连接对象
			Connection cn=DriverManager.getConnection(url, user, password);
			//定义sql语句
			String sql="delete from user where userName=?and userPwd=?";
			//获取预编译对象
			PreparedStatement ps=cn.prepareStatement(sql);
			//设置sql语句中参数的值
			ps.setString(1, userName);
			ps.setString(2, userPwd);
			//执行sql语句
			int t=ps.executeUpdate();
			if(t==1) {
			System.out.println("删除数据成功");
			}else {
				System.out.println("删除数据失败");
			}
			//关闭连接,释放资源
			cn.close();
			cn=null;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

单例模式

package com.cji.mydb;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 
 * 单例模式:类的单例
 * 类属性和成员属性的区别
 * @author Admin
 *
 */
public class DBUtil {

	//定义类属性
	//	懒汉模式
	private static DBUtil dbutil=null;
	//饿汉模式
//	private static DBUtil dbutil=new DBUtil();
	private Connection con;
	
	//私有化本类的构造方法
	private DBUtil() {
		
	}
	
	//定义一个类方法返回本类的对象
	public 	static DBUtil getinstance() {
		if(dbutil==null) {
			dbutil=new DBUtil();
		}
		return dbutil;
	}
	
	
	//定义一个方法返回connection对象
	public Connection getconnection() throws Exception {
		if(con==null) {
		//1、装载驱动
		Class.forName("com.mysql.cj.jdbc.Driver");
		//2.定义连接url
		String url="jdbc:mysql://localhost:3306/stus?serverTimezone=UTC&characterEncoding=utf-8";
		//3.定义账号和密码
		String user="root";
		String password="123456";
		//4.获得连接对象
		 con=DriverManager.getConnection(url, user, password);
			}
		return con;
	
	}
}

 

你可能感兴趣的:(利用JDBC连接数据库以及单例模式)