package unitl01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/**
 * JDBC java与数据库的互联
 * JDBC是由java提供的一套接口,接口中规定了
 * 连接数据库的标准流程以及涉及的一系列方法
 * 只是功能定义,没有具体的实现。
 * 不同的数据库厂商负责提供一套实现类,用于
 * 操作他们的数据库管理系统
 */
public class conn {
	/*
	 * 1:加载驱动
	 *   Class.forName("XXX");
	 *   不同的数据库,类名不同
	 * 2:建立连接
	 *   Connection
	 *   DriverManager.getConnection();
	 *   其中需要三个参数
	 *   1、数据库的连接地址 url
	 *   2、数据库的用户名
	 *   3、数据库密码
	 * 3:创建执行SQL语句对象
	 *   Statement
	 *   connection.createStatement();
	 * 4:发送并执行SQL语句
	 *   insert,update,delete  DML
	 *   select                DQL
	 *   create....            DDL
	 *   executeQuery();DQL
	 *   executeUpdate();DML
	 *   execute();DDL
	 * 5:如果执行查询,会得到结果集
	 *   ResultSet
	 *   处理结果集,捕获数据库中的数据
	 * 6:关闭连接
	 */
	public static void main(String[] args) {

		Connection conn = null;
		try {
		  //1、加载驱动
			Class.forName
			("com.mysql.jdbc.Driver");
			//2、建立连接
			conn= DriverManager.getConnection(
			"jdbc:mysql://localhost/sys",//数据库名称
			"root", "root"//对应用户名、密码

			);
			//3、创建执行sql语句对象
			Statement stmt = conn.createStatement();

			//4、发送SQL语句
			String sql
			= "SELECT id,name,gender "+
				"FROM stu";
			/*
			 * ResultSet executeQuery(String sql);
			 * 专门用来发送SELECT语句的方法。
			 * 返回值为执行该查询语句后查询的结果集
			 */
			ResultSet rs =
			stmt.executeQuery(sql);
			//5、
			/*
			 * 1)、boolean next();
			 * 让当前指针表示下一条记录,如果存在
			 * 数据,返回true,如果已经没有记录,
			 * 返回false
			 * 2)、 获取给定字段的值
			 * 提供一组getXxx()方法。
			 * getInt("id");
			 * getString("name");
			 * getString("gender");.....
			 */
			while(rs.next()){
				int id=rs.getInt("id");
				String name=rs.getString("name");
				String gender=rs.getString("gender");
				System.out.println(
						id+","+name+","+
						gender
				);
			}	
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//6.最后关闭连接,释放资源
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}		
	}
}