1.原生JDBC:
 * 原生JDBC:使用java程序操作数据库,对数据库表进行增删改查(CURD)
 * 实现步骤:
 * 	1.注册驱动
 * 		告知JVM我们使用的是那种驱动程序(mysql驱动,oracle驱动)
 * 	2.获取数据库连接对象
 * 		mysql数据库,是一个TCP服务器,我们必须使用客户端经过3次握手,和服务器建立连接通路
 * 		客户端(黑窗口,SQLyog,java程序)
 * 		就相当于在java程序和mysql服务器之间建立一条道路,这个连接通路中有一个IO对象
 * 	3.获取执行者对象
 * 		用来执行sql语句,对象数据库表进行增删改查
 * 	4.使用执行者对象执行sql语句,获取执行结果
 * 		增删改:返回值是一个整数,影响数据库的有效行数(affected受影响的)
 * 		查询:会查询出多行结果,把多行结果,存储一个ResultSet结果集中(集合)
 * 	5.处理结果集
 * 	6.释放资源
 * 注意:
 * 	1236是固定不变的步骤
 * 	45根据增删改查不同,而不同
 
public class Demo02JDBC { public static void main(String[] args) throws Exception { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取数据库连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day04", "root", "root"); //3.获取执行sql语句的执行者对象 Statement stat = conn.createStatement(); //insert(stat); //update(stat); //delete(stat); select(stat); //6.释放资源 stat.close(); conn.close(); } private static void select(Statement stat) throws SQLException { //4.使用执行者对象,执行sql语句 String sql = "SELECT * FROM category"; ResultSet rs = stat.executeQuery(sql); //5.处理结果 while(rs.next()){ System.out.println(rs.getString("cid")+"\t"+rs.getString("cname")); } } /* * 使用JDBC技术,对象数据库表中的数据进行删除 */ private static void delete(Statement stat) throws SQLException { //4.使用执行者对象,执行sql语句 String sql = "DELETE FROM category WHERE cid IN(5,6)"; int row = stat.executeUpdate(sql); //5.处理结果集 if(row>0){ System.out.println(row+"行数据删除成功!"); }else{ System.out.println("数据删除失败!"); } } /* * 使用JDBC技术,对象数据库表中的数据进行修改 */ private static void update(Statement stat) throws SQLException { //4.使用执行者对象,执行sql语句 String sql = "UPDATE category SET cname = ‘巧克力‘ WHERE cid = 7"; int row = stat.executeUpdate(sql); //5.处理结果集 if(row>0){ System.out.println("数据修改成功!"); }else{ System.out.println("数据修改失败!"); } } /* * 使用JDBC技术,对象数据库表进行添加数据 */ private static void insert(Statement stat) throws SQLException { //4.使用执行者对象,执行sql语句 String sql = "INSERT INTO category (cname) VALUES(‘零食‘)"; int row = stat.executeUpdate(sql); //5.处理结果集 System.out.println(row); } }
2.占位符;
		//3.获取预编译的执行者对象,需要传递sql语句,sql语句中可以使用?占位符代替实际参数
		String sql = "SELECT * FROM users WHERE username=? AND PASSWORD = ?";
		PreparedStatement pst = conn.prepareStatement(sql);
		/*
		 * 4.使用PreparedStatement接口中的方法,设置?占位符的实际参数
		 * void setObject(int parameterIndex, Object x) 使用给定对象设置指定参数的值。 
		 * 参数:
		 * 	int parameterIndex:要设置的第几个?占位符;1,2,3.....
		 * 	Object x:给?占位符设置的实际参数
		 * 注意:
		 * 	必须保证给所有的?占位符都设置实际参数,有几个?占位符就调用几次setObject方法
		 */
		pst.setObject(1, username);
		pst.setObject(2, password);