import java.sql.*;

public class TestJDBC {
	public static void main(String[] args) {
		// 用命令行参数输入三个字符串,把字符串内容插入表的相应字段
		// 本程序的要插入表有三个字段,第一个是数字类型,第二和第三个为字符类型
		if (args.length != 3) {
			System.out.println("参数错误");
			System.exit(-1);
		}
		int id = 0;
		try {
			//处理第一个字符串不能转换为数字的异常
			id = Integer.parseInt(args[0]);
		} catch (NumberFormatException e) {
			e.printStackTrace();
			System.exit(-1);
		}
		String name = args[1];
		String introduction = args[2];
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			// con =
			// DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=root");
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/mydb", "root", "root");
			stmt = con.createStatement();
			// 此处写SQL语句非常繁锁且容易出错
			String sql = "insert into people values(" + id + ",'" + name
					+ "','" + introduction + "')";
			// 一般验证SQL语句写的对不对最好打印出来,然后去相应的数据库工具执行该条语句,执行成功则SQL没错,否则SQL写错
			System.out.println(sql);
			stmt.executeUpdate(sql);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException s) {
			s.printStackTrace();
		} finally {
			// 关闭数据库,一般是后开的先关,对应上面
			try {
				if (rs != null) {
					// 如果rs一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					rs.close();
					rs = null;
				}
				if (stmt != null) {
					// 如果stat一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					stmt.close();
					stmt = null;
				}
				if (con != null) {
					// 如果con一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					con.close();
					con = null;
				}
			} catch (SQLException se) {
				se.printStackTrace();
			}
		}
	}

}