欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaSE高级编程一(JDBC连接)

程序员文章站 2022-04-12 23:33:01
JavaSE高级编程1 JDBC1.1 继承1.2 多态1.3 接口1.4 抽象1.5 面向对象得总结2 String类和类型转换2.1 String2.2 String,StringBuffer与StringBuilder的区别?2.3 类型转换:2.4 Java异常处理机制2.5 final、finally、finalize的区别3 UI图形编程和事件处理3.1 UI图形编程3.2 事件监听1 JDBC1.1 继承1、为什么要使用继承的原因是:因为代码之间是有重复的,违背了代码的只写一次的原则。...

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、 进行封装:得到连接

JavaSE高级编程一(JDBC连接)

2、 关闭连接
JavaSE高级编程一(JDBC连接)

3、 对需要的用户名和密码进行设置:
JavaSE高级编程一(JDBC连接)

4、 设置对于用户类的包装拿过来使用
JavaSE高级编程一(JDBC连接)

5、 设置关闭和建立连接的封装方法,便于多次使用的JDBC
JavaSE高级编程一(JDBC连接)

6、 设置对应的值进行添加还有其他的操作:
JavaSE高级编程一(JDBC连接)

Connection关闭后,ResultSet/Statement都会被关闭
7、 删除
JavaSE高级编程一(JDBC连接)
8、 修改
JavaSE高级编程一(JDBC连接)

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);
		}
		
	}

本文地址:https://blog.csdn.net/weixin_43497761/article/details/108978300

相关标签: java基础 java