package com.jack.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//JDBC案例
public class JDBCTest {
	// JDBC使用

	// first of all :引入jar包
	// orcal的jar包在app\Administrator\product\11.1.0\db_1\jdbc\lib文件夹下
	// 不同数据库的驱动也是不同的。你能够到网上搜索相应的jar包
	public JDBCTest() {
		// TODO Auto-generated constructor stub
		test();
	}

	public static void main(String[] args) {
		JDBCTest jdbc = new JDBCTest();

	}

	public void test() {
		try {
			// 1.首先载入驱动
			// 首先找到OrcalDriver的所在地
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 2.配置连接数据库的基本属性
		String name = "scott";// username
		String pass = "Ndbdta";// password
		// 连接语句,不同的数据库有不同的连接语句
		String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";// 连接类型和主机名

		Connection c = null;

		try {
			// 利用驱动创建连接
			c = DriverManager.getConnection(url, name, pass);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 程序与数据库已经建立了连接后
		//使用PreparedStatement 远远比statement速度要快
		//PreparedStatement不须要预编译存储过程
		PreparedStatement statement = null;
		String sql = "";
		ResultSet rs = null;
		

		//结果集中能够直接改动
		try {
			sql = "update emp set ename=? where empno=?";
			statement = c.prepareStatement(sql);
			//将?替换掉,按列数和类型输入值
			statement.setString(1, "jack");
			statement.setInt(2, 7934);
		    statement.execute();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		///////////////////
		//查找
		try {
			sql = "select * from emp";
			statement = c.prepareStatement(sql);
			rs = statement.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			// 结果集的首先指向第一行之前,第一次运行next()时移动到第一行
			while (rs.next()) {
				int eno = rs.getInt(1);
				String ename = rs.getString(2);
				System.out.println(eno + "\t" + ename);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}
}