JAVA执行SQL语句的两种用法(第二种方法--preparedStatement接口实现)

import java.sql.*;

public class TestpreparedJDBC {
	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;
		// 注意:此处改成PreparedStatement,不懂PreparedStatement的用法查JAVA_API
		PreparedStatement pstmt = 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");
			// 以下SQL的格式是PreparedStatement接口定义的
			String sql = "insert into people(?,?,?)";
			pstmt = con.prepareStatement(sql);
			// 设置第1个问号的值
			pstmt.setInt(1, id);
			// 设置第2个问号的值
			pstmt.setString(2, name);
			// 设置第3个问号的值
			pstmt.setString(3, introduction);
			System.out.println(sql);
			pstmt.execute();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException s) {
			s.printStackTrace();
		} finally {
			// 关闭数据库,一般是后开的先关,对应上面
			try {
				if (rs != null) {
					// 如果rs一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					rs.close();
					rs = null;
				}
				if (pstmt != null) {
					// 如果pstmt一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					pstmt.close();
					pstmt = null;
				}
				if (con != null) {
					// 如果con一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下
					con.close();
					con = null;
				}
			} catch (SQLException se) {
				se.printStackTrace();
			}
		}
	}

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值