
WHERE LASTNAME = ?")与 createStatement 方法相同,重载 prepareStatement 方法的目的是提供对指定 ResultSet 特征的支持。prepareStatement 方法还具有变体,可使用自动生成的键。以下是有效 prepareStatement 方法调用的一些示例:示例:prepareStatement 方法注意:请阅读以了解重要的法律信息。 // New in JDBC 2.0 PreparedStatement ps2 = conn.prepareStatement("SELECT * FROM
EMPLOYEE_TABLE WHERE LASTNAME = ?", ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE)// New in JDBC 3.0 PreparedStatement ps3 = conn.prepareStatement("SELECT * FROM
EMPLOYEE_TABLE WHERE LASTNAME = ?",
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATEABLE,
ResultSet.HOLD_CURSOR_OVER_COMMIT)PreparedStatement ps4 = conn.prepareStatement("SELECT * FROM
EMPLOYEE_TABLE WHERE LASTNAME = ?", Statement.RETURN_GENERATED_KEYS)在可以处理 PreparedStatement 对象之前,必须将每个参数标记设置为一些值。PreparedStatement 对象提供了许多个用于设置参数的方法。所有这些方法的格式均为 set<Type>,其中 <Type>是 Java 数据类型。这些方法的一些示例包括 setInt、setLong、setString、setTimestamp、setNull 和 setBlob。几乎所有这些方法都有两个参数:* 第一个参数是该参数在语句中的索引。参数标记具有从 1 开始的编号。
* 第二个参数是要对第一个参数设置的值。有几个 set<Type>方法具有附加的参数,如 setBinaryStream 上的长度参数。有关更多信息,请查阅 java.sql 包的 Javadoc。通过对 ps 给出在先前示例中准备的 SQL 语句,以下代码说明了如何在处理之前指定参数值:ps.setString(1,'Dettinger')如果尝试处理带有尚未设置的参数标记的 PreparedStatement,则将抛出 SQLException。注意:在设置参数标记之后,除非发生下列情况,否则参数标记将保持具有同一个值。* 另一个 set 方法调用更改了该值。
* 调用 clearParameters 方法时除去了该值。clearParameters 方法将所有参数都标记为尚未设置。在进行 clearParameters 调用之后,在执行下一个过程之前,必须再次对所有参数调用 set 方法。新的 ParameterMetaData 接口允许检索关于参数的信息。此支持与 ResultSetMetaData 相符并且类似。提供了全面的诸如精度、标度、数据类型、数据类型名以及该参数是否允许空值之类的信息。
name是MySQL保留字,原则上不应用作字段名或库名,如果非用不可,那在使用时要给它用反单引号(即`,也就是大键盘数字键1左边的那个键)括起来。所以你试试 setString(1, "`name`") 看还会不会出错。条件允许的话,还是建议你尽量更改数据库的字段名name,比方说可以改为name1
String sql="select * from ABC where NAME=@name"pstmt.setString(1,@name)
你想要执行的是参数查询,所以要先用到@name 参数,?是用在Access的数据库。 谢谢
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)