Java连接数据库(JDBC)中的增删改查

增:

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC连接数据库,对emp进行数据的插入操作
public class TestInsert {

	public static void main(String[] args) throws SQLException {
		
		//获得数据库的连接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
//		System.out.println(con);
		
		//预编译SQL语句
		String sql = "insert into emp values(?,?,?,?,?,?,?,?)"; //8列8个问号
		PreparedStatement prep = con.prepareStatement(sql);
		prep.setInt(1, 2222); //员工编号
		prep.setString(2, "xiaohong"); //员工姓名
		prep.setString(3, "boss"); //职位
		prep.setInt(4, 7902); //部门经理的编号
		//时间:1小时 = 60分;1分钟 = 60秒;1秒 = 1000毫秒 1小时 = 60*60*1000 = 3600000毫秒 
		long time = System.currentTimeMillis(); //从1970年开始至今的毫秒数
//		System.out.println(time);
		//new Date(time) 就是将long类型的毫秒数转换未数据库支持的日期Date类型
		prep.setDate(5, new Date(time)); //入职日期--当前系统时间
		prep.setDouble(6, 632.12); //底薪
		prep.setDouble(7, 100.0); //提成
		prep.setInt(8, 40); //部门编号
		
		//执行SQL语句
		prep.executeUpdate(); //插入、修改、删除的SQL操作使用该方法
		con.commit(); //提交
		
		System.out.println("插入成功");
		
	}

}

删:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC连接数据库,对emp表中的数据进行删除操作
public class TestDelete {

	public static void main(String[] args) throws SQLException {
		
		//获得数据库的连接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println(con); //测试连接是否正常 oracle.jdbc.driver.T4CConnection@57fa26b7
		
		//预编译SQL语句
		//直接删性能不够好,需要封装
		String sql = "delete from emp where empno=?";
		PreparedStatement prep = con.prepareStatement(sql);
		//设置SQL语句中的问号
		//参数1:表示第几个问号,从数字1开始 
		//参数2:对问号要设置的值
		prep.setInt(1, 7900);
		
		//执行SQL语句
		//executeQuery() -->执行的sql语句是select...
		//executeUpdate() -->执行的SQL语句是insert... update... delete...
		prep.executeUpdate();
		con.commit(); //DML语言执行完毕后,要commit提交
		
		System.out.println("删除成功");
		
	}

}

改:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//使用JDBC连接数据库,对emp表中的数据进行修改操作
public class TestUpdate {

	public static void main(String[] args) throws SQLException {
		
		//获得数据库的连接
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username = "system";
		String pwd = "tarena";
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println(con);
		
		//预编译SQL语句 -- 修改xiaohong的底薪和提成
		String sql = "update emp set sal=?,comm=? where empno=?";
		PreparedStatement prep = con.prepareStatement(sql);
		prep.setDouble(1, 8900.1); //底薪
		prep.setDouble(2, 2000); //提成
		prep.setInt(3, 2222); //员工编号2222表示xiaohong员工
		
		//执行SQL语句
		prep.executeUpdate();
		con.commit(); //提交
		
		System.out.println("更改成功");
		
	}

}

查:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//使用JDBC连接数据库,查询emp表中的数据
public class TestSelect {

	public static void main(String[] args) throws SQLException {
		
		//获得数据库Oracle的连接,连接是Connection
		//连接是通过DriverManager来调用getConnection来获取的
		//连接Oracle数据库的url地址
		// :理解为连接
		//@表示写的ip地址localhost表示本地,也可写127.0.0.1 (局域网可访问其他[知IP],例:机房内等)
		//thin 表示数据库的版本为瘦型版本
		//1521表示Oracle在安装时默认的端口号
		//orcl是Oracle数据库的全局数据库名(可改)
		/**
		 * 在安装时默认的端口号(固定的)
		 * 1、#mysql的默认端口是3306,可以编辑用户目录下的 .my.cnf 文件进行修改;
		 * 2、sqlserver默认端口号为:1433;
		 * 3、#oracle默认端口号为:1521;
		 * 4、DB2默认端口号为:5000;
		 * 5、PostgreSQL默认端口号为:5432。
		 */
		String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 
		String username = "system"; //连接Oracle数据库的用户名
		String pwd = "tarena"; //连接Oracle数据库的密码
//		JFrame jFrame = new JFrame(); //正确
//		Connection con = new Connection(); //错误
		//throws 抛出异常 有可能连接不到
		Connection con = DriverManager.getConnection(url, username, pwd);
		System.out.println("获得数据库的连接为:" + con);  //获得数据库的连接为:oracle.jdbc.driver.T4CConnection@57fa26b7
		
		//通过上面得到的con连接,调用prepareStatement方法来预编译SQL语句 
		//该方法返回PreparedStatement类型的对象
		//insert delete update select
		//SQL中预编译结束标志:";"
		String sql = "select * from emp";
		PreparedStatement prep = con.prepareStatement(sql);
		
		//通过上面得到prep来调用方法,去执行sql语句,获得执行的结果集
		ResultSet rs = prep.executeQuery();
		//将结果集rs中的所有数据输出在控制台上(该结果集rs中的数据可不止一条[空/很多])
//		System.out.println(rs); //oracle.jdbc.driver.OracleResultSetImpl@531be3c5
		//使用循环将结果集中数据一条一条的取出来,然后再输出在控制台上
		//for明确知道循环几遍,while、do-while不确定循环次数
//		int m = 1;
//		while (m <= 10) {
//			System.out.println(m);
//			m++;
//		}
//		//同
//		for (int i = 1; i <= 10; i++) {
//			System.out.println(i);
//		}
		//rs.next() 判断结果集rs中下一条是否还有数据,如果有数据,返回true;如果没有数据了,返回false
		/**
		 * 整数 byte short #int long  #number(n)
		 * 浮点/小数 float double #numbre(n,m)
		 * 字符串 String #char(n) varchar2(n)
		 * 日期 Date #date
		 */
		while (rs.next()) {
			//在控制台上输出15行hello。因为rs结果集中有15条数据,所以while循环执行了15遍
//			System.out.println("hello");
			System.out.println(rs.getInt("empno") + "," + rs.getString("ename")+ "," 
					+ rs.getDate("hiredate")+ "," + rs.getDouble("sal"));
		}
		
	}

}
发布了53 篇原创文章 · 获赞 33 · 访问量 1251

猜你喜欢

转载自blog.csdn.net/qq_44458489/article/details/104936032