java连接mysql

加载驱动

创建连接

Class.forName("com.mysql.jdbc.Driver");

	public static Connection conn;
	public static ResultSet rs;
	public static PreparedStatement st;
	private  static  String url ="jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false";
	// 建立连接
	public static String[] getConn() {
		String[] user = new String[2];
		user[0] = "admin";
		user[1] = "admin";
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, "root", "root");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return user;

	}
	// 释放连接

	public static void closeConn() { // 关闭连接
		try {
			if (rs != null) {
				rs.close();
			}
			if (st != null) {
				st.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
	

execute 执行 query查询 update 更新

statement 缺点 1.不安全 2.需要进行字符串的拼接  3,效率低

PreparedStatement 是statement的升级版 

1.使用statement创建连接代码

// 查询数据 表
	public static void searchAll() throws Exception {
		getConn();
		// 3.写sql语句 
		String  sql="select * from 表名";
		// 4.创建statement实例
		st = conn.createStatement();
		// 5.执行sql 执行查询方法,有返回值,返回的是一个结果集
		//execute 执行  query查询
		rs = st.executeQuery(sql);
		// 6.遍历结果集,输出结果
		System.out.println("学号 \t" + "姓名 \t" + "年龄\t" + "性别");
		while (rs.next()) {
			System.out.println(rs.getInt("stuNo") + "\t" + rs.getString("name"));
		}
		// 7.关闭连接 先开的后关,后开的先关
		closeConn();
	}

	// 更新数据
	public static void updateEmp(String sql) throws Exception {
		getConn();
		// 3.写sql语句
		// 4.创建statement实例
		st = conn.createStatement();
		// 调用此方法实现数据的删除,返回值类型是int类型,返回的是受影响的行数
		// 如果成功的删除了若干(3)行,就会返回3;如果删除失败,则返回0;
		// 我们就可以根据返回值是否为0,判断是否删除成功
		int i = st.executeUpdate(sql);
		if (i > 0) {
			System.out.println("更新成功");
		} else {
			System.out.println("更新失败");
		}
		// 7.关闭连接 先开的后关,后开的先关
		closeConn();
	}

 2.使用PreparedStatement创建连接

	// 查询数据 emp 中某一条记录
	public static Stu searchById(int id) throws Exception {
		Stu stu = new Stu();
		getConn();
		// 3.写sql语句
		String sql = "select * from students where stuNo=?";
		// 4.创建statement实例
		st = conn.prepareStatement(sql);
		st.setInt(1, id);
		// System.out.println("st byid: " + st);
		// 5.执行sql 执行查询方法,有返回值,返回的是一个结果集
		rs = st.executeQuery();

		// 6.遍历结果集,输出结果
		/*
		 * System.out.println("学号 \t" + "姓名 \t" + "年龄\t"+ "性别\t"+ "年级\t  "+
		 * "电话\t " + "Email" + " " + "地址");
		 */
		if (rs.next()) {
			/*
			 * System.out.println(rs.getInt("stuNo") + "\t" +
			 * rs.getString("name") + "\t" + rs.getInt("age") + "\t" +
			 * rs.getString("sex") + "\t" +
			 * rs.getString("grade")+"\t"+rs.getLong("tel")+" \t "+rs.getString(
			 * "email")+"\t"+rs.getString("address"));
			 */
			stu.setStuNo(rs.getInt("stuNo"));
			stu.setName(rs.getString("name"));
			stu.setAge(rs.getInt("age"));
			stu.setSex(rs.getString("sex"));
			stu.setGrade(rs.getString("grade"));
			stu.setTel(rs.getLong("tel"));
			stu.setAddress(rs.getString("address"));
			stu.setGid(rs.getInt("gid"));
		}
		// 7.关闭连接 先开的后关,后开的先关
		closeConn();
		return stu;
	}
	public static Boolean searchChose(String sql) throws Exception{
		getConn();
		st = conn.prepareStatement(sql);
		rs = st.executeQuery();
		boolean flag=rs.next();
		closeConn();
		return flag;
	}

	// 更新数据
	public static void updateEmp(String sql,Object[] prim) throws Exception {
		getConn();
		// 3.写sql语句
		// 4.创建statement实例
	   PreparedStatement	ps = conn.prepareStatement(sql);
		// 调用此方法实现数据的删除,返回值类型是int类型,返回的是受影响的行数
		// 如果成功的删除了若干(3)行,就会返回3;如果删除失败,则返回0;
		// 我们就可以根据返回值是否为0,判断是否删除成功
	   for (int i = 0; i < prim.length; i++) {
		ps.setObject(i+1,prim[i] );
	}
		int i = ps.executeUpdate();
		
		if (i > 0) {
			System.out.println("更新成功");
		} else {
			System.out.println("更新失败");
		}
		// 7.关闭连接 先开的后关,后开的先关
		closeConn();
	}

 删除

System.out.println("请输入要删除的学生id");
			int stuNo = input.nextInt();
			String sql2 = "delete from students where stuNo=?";
			Stu st=new Stu();
			st.setStuNo(stuNo);
			Object[] prim={st.getStuNo()};
			stu.updateEmp(sql2,prim);

 添加

	String sql = "insert into students values(?,?,?,?,?,?,?,?,?)";
			Stu st=new Stu();
			st.setStuNo(id);
			st.setName(name);
			st.setAge(age);
			st.setAddress(address);
			st.setEmail(email);
			st.setGid(gid);
			st.setSex(sex);
			st.setTel(tel);
			st.setGrade(grade);
			Object[] prim={st.getStuNo(),st.getName(),st.getAge(),st.getSex(),st.getGrade(),st.getTel(),st.getEmail(),st.getAddress()
					,st.getGid()};
			stu.updateEmp(sql,prim);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值