JavaSE高级编程一(JDBC连接)

1 JDBC

1.1 传参方式

(1)实体化类(构造方法)
(2)监听类的方法进行传参
(3)静态类的使用
(4)Get/set的对属性进行封装

1.2 if超过三个记得将内部的语句块封装成方法;

1.3 prepareStatement()接口:

prepareStatement()是statement的子接口。
接口跟接口之间是可以继承。PreparedStatement 接口创建表示预编译的SQL 语句的对象。
SQL 语句经过预编译,并存储在PreparedStatement 对象中。然后,此对象可用来有效地多次执行此语句。用 executeUpdate() 方法执行SQL语句
优点:使用prepareStatement表示可以在传递参数时比较不容易出错,对于数据库语句的使用过程中个,比较容易掌握,安全性高,比之前的statement传递更方便。

1.4 preparestatemnet和statement的区别:

(1)preparestament是预编译而statement不是;
(2)在每次执行sql语句的增删改时,statement都要重新编译一遍,preparement不用,运行效率大于statement;
(3)对于可读性来讲,虽然preparement来替代statement会多出几行,但是这样的可读性效果是很好的,比较不容易出错。
(4)安全性来讲:preparestatement是用?
传参的,可以防止sql的语句错误编写,而statement是用拼接的,安全性是较低的,比较容易出错。
(5)ResultSet接口
返回ResultSet,主要是为了显示sql语句的执行结果。
使用 getXXX 方法检索数据 , getInt() 用于检索整型值 ,getString() 用于检索字符串值。
通过next()方法对于每一条的结果检索,If显示一条,while全部显示。

1.5 JDBC的执行步骤:

1.5.1 全部执行过程:


public static Connection conn;
	public static void main(String[] args) {
		try {
				//1、加载驱动String ->object(程序类)
				Class.forName("org.sqlite.JDBC");
				//2、得到连接
				conn = DriverManager.getConnection("JDBC:sqlite:db\\myqqs.db");
				System.out.println(conn);
				System.out.println("JDBC驱动加载成功");
				//3、执行对象
				Statement state  = conn.createStatement();
				//4、String
				String sql ="INSERT INTO employee (EID,Employee_name,Employee_pwd,Job_name)VALUES(112,'大大',1234,'软件')";
				//5、执行
				int num = state.executeUpdate(sql);
				//6、处理结果
				if(num>0) 
				{
					System.out.println("添加成功");
				}
				else 
				{
					System.out.println("添加失败");
				}
				//7、关闭电源
				state.close();//关掉对象
				conn.close();//关掉连接
			} 
		catch (ClassNotFoundException e) {//调用jar包就出现了各种错误,都是ClassNOtFoundException
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		catch (SQLException e) {//数据库错误
			// TODO: handle exception
			e.printStackTrace();
			System.out.println("数据异常");
		}
	}

1.5.2 JDBC连接对应的mysql的数据库:

重点:
1、 进行封装:得到连接

在这里插入图片描述

2、 关闭连接
在这里插入图片描述

3、 对需要的用户名和密码进行设置:
在这里插入图片描述

4、 设置对于用户类的包装拿过来使用
在这里插入图片描述

5、 设置关闭和建立连接的封装方法,便于多次使用的JDBC
在这里插入图片描述

6、 设置对应的值进行添加还有其他的操作:
在这里插入图片描述

Connection关闭后,ResultSet/Statement都会被关闭
7、 删除
在这里插入图片描述
8、 修改
在这里插入图片描述

1.5.3 进行JDBC的增删改查

下面展示一些 内联代码片

/*
	 * *************
	 * 添加JDBC数据---------------
	 * 1、添加数据库的记录
	 */
	private String addNewUser(TbUser tbUser) {
		String sql ="INSERT INTO user (eid,user_name,user_pwd,job_name) VALUES('"+tbUser.getEid()+"',"
				+ "'"+tbUser.getUser_name()+"',"
						+ "'"+tbUser.getUser_pwd()+"',"
								+ "'"+tbUser.getJob_name()+"')";
		System.out.println("数据库记录:"+sql);
		return sql;
	}
	/*
	 * 2、用户来自于哪里,并且有返回
	 */
	private TbUser getUseFrom() 
	{
		tbUser = new TbUser();
		int eid = Integer.parseInt(UI.myqqReginJFrame.getMyqqReginJPlane().getLaccount_text().getText());
		tbUser.setEid(eid);
		tbUser.setUser_name(UI.myqqReginJFrame.getMyqqReginJPlane().getLnickname_text().getText());
		tbUser.setUser_pwd(UI.myqqReginJFrame.getMyqqReginJPlane().getLpwd_text().getText());
		tbUser.setJob_name(UI.myqqReginJFrame.getMyqqReginJPlane().getContent_text().getText());
		return tbUser;
	}
	
	//3、添加数据
	private void regins() {
		try {
			//1、建立连接,加载数据库驱动
			conn = DbHepler.getConnection(); 
			//2、创建执行sql语句的对象,执行对象
			state = conn.createStatement();
			tbUser = getUseFrom();
			//3、String,编写sql语句
			String sql = addNewUser(tbUser);
			//4、执行sql语句
			int num = state.executeUpdate(sql);
			//5、处理结果
			if(num>0) 
			{
				JOptionPane.showMessageDialog(null, "注册成功!");
				System.out.println("添加成功");
				UI.tologin();//跳转登录
			}
			else 
			{
				System.out.println("添加失败");
			}
			} catch (SQLException e1) {
					e1.printStackTrace();
			}
			finally {
					DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
			}
		}
	
	/*
	 * *************
	 * 删除JDBC数据---------------
	 * 1、删除数据库的记录
	 */
	private String deleNewUser(TbUser tbUser) {
		String sql ="delete from user where eid='"+tbUser.getEid()+"'";
		System.out.println("数据库记录:"+sql);
		return sql;
	}
	
	/*
	 * 2、用户来自于哪里,并且有返回
	 */
	private TbUser getUsefrom()  
	{
		tbUser = new TbUser();
		int eid = Integer.parseInt(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_accout().getText());
		tbUser.setEid(eid);
		return tbUser;
	}
	
	/*
	 * 3、删除
	 */
	private void removeone() {
			try {
				//1、建立连接
				conn = DbHepler.getConnection(); 
				//2、执行对象
				state = conn.createStatement();
				
				tbUser = getUsefrom();//得到用户
				//3、String
				String sql = deleNewUser(tbUser);//删除用户
				//4、执行
				int num = state.executeUpdate(sql);
				//5、处理结果
				if(num>0) 
				{
					System.out.println("删除成功");
					JOptionPane.showMessageDialog(null, "删除成功!");
				}
				else 
				{
					System.out.println("删除失败");
					JOptionPane.showMessageDialog(null, "删除失败!");
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			finally {
				DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
			}
		}
	
	/*
	 * 更新数据
	 */
	//1数据库
	public String updateData(TbUser tbUser) 
	{
		String sql = "update user set user_pwd='"+tbUser.getUser_pwd()+"'  where eid='"+tbUser.getEid()+"'";
		return sql;
	}
	//2面板
	public TbUser getUserupdate() 
	{
		tbUser = new TbUser();
		int eid = Integer.parseInt(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_accout().getText());
		tbUser.setEid(eid);
		tbUser.setUser_pwd(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_pwd().getText());
		return tbUser;
	}
	//3更新
	public void updateUser() 
	{
		try {
			//1、建立连接
			conn = DbHepler.getConnection(); 
			//2、执行对象
			state = conn.createStatement();
			//3、String
			tbUser = getUserupdate();//用户的更新
			String sql = updateData(tbUser);
			//4、执行
			int num = state.executeUpdate(sql);
			//5、处理结果
			if(num>0) 
			{
				System.out.println("更新成功");
				JOptionPane.showMessageDialog(null, "更新成功!");
			}
			else 
			{
				System.out.println("更新失败");
				JOptionPane.showMessageDialog(null, "更新失败!");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
		}


//查询所有的数据:
public void testResultSet(){
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;
		
		try {
			//1. 获取数据库连接
			connection = DbHepler.getConnection(); 
			//2、创建执行sql语句的对象,执行对象
			//2. 调用 Connection 对象的 createStatement() 方法获取 Statement 对象
			statement = connection.createStatement();
			
			//3. 准备 SQL 语句
			String sql = "SELECT eid,user_name,user_pwd, Job_name,Boss_ID,Dept_ID FROM user";
			
			//4. 发送 SQL 语句: 调用 Statement 对象的  executeQuery(sql) 方法.
			//得到结果集对象 ResultSet
			resultSet = statement.executeQuery(sql);
			
			//5. 处理结果集:
			//5.1 调用 ResultSet 的 next() 方法: 查看结果集的下一条记录是否有效, 
			//若有效则下移指针
			System.out.println("用户表数据:");
			while(resultSet.next()){
				//5.2 getXxx() 方法获取具体的列的值. 
				int id = resultSet.getInt(1);
				String user = resultSet.getString(2);
				String pwd = resultSet.getString(3);
				String jobname = resultSet.getString(4);
				int bid = resultSet.getInt(5);
				int did = resultSet.getInt(6);
				System.out.println(id+"\t"+user+"\t"+pwd+"\t"+jobname+"\t"+bid+"\t"+did);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally{
			//6. 关闭数据库资源
			DbHepler.release(connection, statement, resultSet);
		}
		
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值