- 所有超级接口:
-
AutoCloseable,Wrapper
- 所有已知子接口:
-
CallableStatement,PreparedStatement
用于执行静态SQL语句并返回其生成结果的对象。
默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果一个ResultSet对象的读取与另一个的读取交错进行,则每个必须由不同的Statement对象生成。 Statement接口中的所有执行方法在存在打开的ResultSet对象时会隐式关闭该语句的当前ResultSet对象。
- 自版本:
- 1.1
- 参见:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int表示应关闭先前保持打开的所有ResultSet对象的常量,当调用getMoreResults时。static final int表示在调用getMoreResults时应关闭当前ResultSet对象的常量。static final int表示执行批处理语句时发生错误的常量。static final int表示在调用getMoreResults时不应关闭当前ResultSet对象的常量。static final int表示不应使生成的键可用于检索的常量。static final int表示应使生成的键可用于检索的常量。static final int表示批处理语句成功执行但无法获得受影响行数计数的常量。 -
Method Summary
Modifier and TypeMethodDescriptionvoid将给定的SQL命令添加到此Statement对象的当前命令列表中。voidcancel()如果DBMS和驱动程序支持中止SQL语句,则取消此Statement对象。void清空此Statement对象当前的SQL命令列表。void清除此Statement对象上报告的所有警告。voidclose()立即释放此Statement对象的数据库和JDBC资源,而不是等待自动关闭时才释放。void指定当所有依赖的结果集关闭时,此Statement将被关闭。default StringenquoteIdentifier(String identifier, boolean alwaysQuote) 返回SQL标识符。default StringenquoteLiteral(String val) 返回用单引号括起来的String。default String返回用单引号括起来的表示国家字符集文字的String,并以大写字母N为前缀。boolean执行给定的SQL语句,可能返回多个结果。boolean执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使任何自动生成的键可用于检索。boolean执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。boolean执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。int[]将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。default long[]将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。default longexecuteLargeUpdate(String sql) 执行给定的SQL语句,可能是INSERT、UPDATE或DELETE语句,或者是返回空值的SQL DDL语句。default longexecuteLargeUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句,并使用给定标志通知驱动程序此Statement对象生成的自动生成键是否应可用于检索。default longexecuteLargeUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。default longexecuteLargeUpdate(String sql, String[] columnNames) 执行给定的SQL语句,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。executeQuery(String sql) 执行给定的SQL语句,返回单个ResultSet对象。intexecuteUpdate(String sql) 执行给定的SQL语句,可能是INSERT、UPDATE或DELETE语句,或者是返回空值的SQL DDL语句。intexecuteUpdate(String sql, int autoGeneratedKeys) 执行给定的SQL语句,并使用给定标志通知驱动程序此Statement对象生成的自动生成键是否应可用于检索。intexecuteUpdate(String sql, int[] columnIndexes) 执行给定的SQL语句,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。intexecuteUpdate(String sql, String[] columnNames) 执行给定的SQL语句,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。检索生成此Statement对象的Connection对象。int检索从此Statement对象生成的结果集的默认获取行的方向。int检索从此Statement对象生成的ResultSet对象的默认获取行数。检索由执行此Statement对象而创建的任何自动生成的键。default long检索由此Statement对象生成的ResultSet对象可以包含的最大行数。default long将当前结果作为更新计数检索;如果结果是ResultSet对象或没有更多结果,则返回-1。int检索由此Statement对象生成的ResultSet对象中字符和二进制列值返回的最大字节数。int检索由此Statement对象生成的ResultSet对象可以包含的最大行数。boolean移动到此Statement对象的下一个结果,如果是ResultSet对象则返回true,并隐式关闭使用getResultSet方法获取的任何当前ResultSet对象。booleangetMoreResults(int current) 移动到此Statement对象的下一个结果,根据给定标志处理任何当前ResultSet对象,并返回true如果下一个结果是ResultSet对象。int检索驱动程序等待Statement对象执行的秒数。将当前结果作为ResultSet对象检索。int检索由此Statement对象生成的ResultSet对象的结果集并发性。int检索由此Statement对象生成的ResultSet对象的结果集可保持性。int检索由此Statement对象生成的ResultSet对象的结果集类型。int将当前结果作为更新计数检索;如果结果是ResultSet对象或没有更多结果,则返回-1。检索此Statement对象上报告的第一个警告。booleanisClosed()检索此Statement对象是否已关闭。boolean返回一个值,指示当所有依赖的结果集关闭时,此Statement是否将被关闭。boolean返回一个值,指示Statement是否可池化。default booleanisSimpleIdentifier(String identifier) 检索identifier是否为简单SQL标识符。voidsetCursorName(String name) 将SQL游标名称设置为给定的String,将由后续Statement对象execute方法使用。voidsetEscapeProcessing(boolean enable) 打开或关闭转义处理。voidsetFetchDirection(int direction) 向驱动程序提供有关在使用此Statement对象创建的ResultSet对象中处理行的方向的提示。voidsetFetchSize(int rows) 向JDBC驱动程序提供有关当需要更多行时应从数据库获取的行数的提示,用于由此Statement生成的ResultSet对象。default voidsetLargeMaxRows(long max) 将由此Statement对象生成的任何ResultSet对象包含的最大行数限制设置为给定数目。voidsetMaxFieldSize(int max) 将由此Statement对象生成的ResultSet对象中字符和二进制列值返回的最大字节数限制设置为给定数目。voidsetMaxRows(int max) 将由此Statement对象生成的任何ResultSet对象包含的最大行数限制设置为给定数目。voidsetPoolable(boolean poolable) 请求将Statement池化或不池化。voidsetQueryTimeout(int seconds) 将驱动程序等待Statement对象执行的秒数设置为给定秒数。Methods declared in interface java.sql.Wrapper
isWrapperFor, unwrap
-
Field Details
-
CLOSE_CURRENT_RESULT
static final int CLOSE_CURRENT_RESULT表示在调用getMoreResults时应关闭当前ResultSet对象的常量。- 自版本:
- 1.4
- 参见:
-
KEEP_CURRENT_RESULT
static final int KEEP_CURRENT_RESULT表示在调用getMoreResults时不应关闭当前ResultSet对象的常量。- 自从:
- 1.4
- 参见:
-
CLOSE_ALL_RESULTS
static final int CLOSE_ALL_RESULTS表示当调用getMoreResults时,应关闭先前保持打开的所有ResultSet对象的常量。- 自从:
- 1.4
- 参见:
-
SUCCESS_NO_INFO
static final int SUCCESS_NO_INFO表示批处理语句成功执行,但没有可用的受影响行数计数的常量。- 自从:
- 1.4
- 参见:
-
EXECUTE_FAILED
static final int EXECUTE_FAILED表示执行批处理语句时发生错误的常量。- 自从:
- 1.4
- 参见:
-
RETURN_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS表示应使生成的键可用于检索的常量。- 自从:
- 1.4
- 参见:
-
NO_GENERATED_KEYS
static final int NO_GENERATED_KEYS表示不应使生成的键可用于检索的常量。- 自从:
- 1.4
- 参见:
-
-
Method Details
-
executeQuery
执行给定的SQL语句,返回一个单个ResultSet对象。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- 要发送到数据库的SQL语句,通常是静态SQLSELECT语句 - 返回:
-
包含给定查询产生的数据的
ResultSet对象;永不为null - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句产生除单个ResultSet对象之外的任何内容,该方法在PreparedStatement或CallableStatement上调用 -
SQLTimeoutException- 当驱动程序确定已超过setQueryTimeout方法指定的超时值并且至少尝试取消当前正在运行的Statement时
-
executeUpdate
执行给定的SQL语句,可能是一个INSERT、UPDATE或DELETE语句,或者返回空值的SQL语句,例如SQL DDL语句。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT、UPDATE或DELETE;或者返回空值的SQL语句,如DDL语句。 - 返回:
- (1) SQL数据操作语言(DML)语句的行数,或者(2) 对于返回空值的SQL语句为0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句产生ResultSet对象,该方法在PreparedStatement或CallableStatement上调用 -
SQLTimeoutException- 当驱动程序确定已超过setQueryTimeout方法指定的超时值并且至少尝试取消当前正在运行的Statement时
-
close
立即释放此Statement对象的数据库和JDBC资源,而不是等待自动关闭时才释放。通常最好在完成后立即释放资源,以避免占用数据库资源。对已关闭的
Statement对象调用close方法没有任何效果。注意:当
Statement对象关闭时,如果存在当前的ResultSet对象,则也将关闭。- 指定者:
-
close在接口AutoCloseable中 - 抛出:
-
SQLException- 如果发生数据库访问错误
-
getMaxFieldSize
检索由此Statement对象生成的ResultSet对象中字符和二进制列值可以返回的最大字节数。此限制仅适用于BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR、NCHAR、NVARCHAR、LONGNVARCHAR和LONGVARCHAR列。如果超过限制,多余的数据将被静默丢弃。- 返回:
- 存储字符和二进制值的列的当前列大小限制;零表示没有限制
- 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
setMaxFieldSize
设置由此Statement对象生成的ResultSet对象中字符和二进制列值可以返回的最大字节数的限制。此限制仅适用于BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR、NCHAR、NVARCHAR、LONGNVARCHAR和LONGVARCHAR字段。如果超过限制,多余的数据将被静默丢弃。为了最大可移植性,使用大于256的值。- 参数:
-
max- 新的字节列大小限制;零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,或者条件max >= 0不满足 - 参见:
-
getMaxRows
检索由此Statement对象生成的ResultSet对象可以包含的最大行数。如果超过此限制,多余的行将被静默丢弃。- 返回:
-
由此
Statement对象生成的ResultSet对象的当前最大行数;零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
setMaxRows
将由此Statement对象生成的任何ResultSet对象的最大行数限制设置为给定的数字。如果超过限制,多余的行将被静默丢弃。- 参数:
-
max- 新的最大行数限制;零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,或者条件max >= 0不满足 - 参见:
-
setEscapeProcessing
打开或关闭转义处理。如果启用转义扫描(默认情况下),驱动程序将在将SQL语句发送到数据库之前执行转义替换。Connection和DataSource属性escapeProcessing可用于更改默认的转义处理行为。值为true(默认值)会为所有Statement对象启用转义处理。值为false会为所有Statement对象禁用转义处理。可以使用setEscapeProcessing方法为单个Statement对象指定转义处理行为。注意: 由于通常在进行此调用之前已解析准备好的语句,因此禁用
PreparedStatements对象的转义处理将不会产生任何效果。- 参数:
-
enable-true表示启用转义处理;false表示禁用 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法
-
getQueryTimeout
检索驱动程序将等待Statement对象执行的秒数。如果超过限制,将抛出SQLException。- 返回:
- 当前查询超时限制(以秒为单位);零表示没有限制
- 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
setQueryTimeout
设置驱动程序等待Statement对象执行的秒数为给定的秒数。默认情况下,运行语句完成的时间没有限制。如果超过限制,将抛出SQLTimeoutException。JDBC驱动程序必须将此限制应用于execute、executeQuery和executeUpdate方法。注意: JDBC驱动程序实现也可能将此限制应用于
ResultSet方法(请参阅您的驱动程序供应商文档以获取详细信息)。注意: 在
Statement批处理的情况下,是实现定义的,超时是应用于通过addBatch方法添加的单个SQL命令还是应用于executeBatch方法调用的整个SQL命令批处理(请参阅您的驱动程序供应商文档以获取详细信息)。- 参数:
-
seconds- 以秒为单位的新查询超时限制;零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或条件seconds >= 0不满足 - 参见:
-
cancel
如果DBMS和驱动程序支持中止SQL语句,则取消此Statement对象。此方法可由一个线程用于取消另一个线程正在执行的语句。- 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法
-
getWarnings
检索由此Statement对象调用报告的第一个警告。随后的Statement对象警告将链接到此SQLWarning对象。每次语句(重新)执行时,警告链都会自动清除。不应在关闭的
Statement对象上调用此方法;这样做将导致抛出SQLException。注意: 如果正在处理
ResultSet对象,与该ResultSet对象上的读取相关的任何警告将链接到该对象,而不是生成它的Statement对象。- 返回:
-
第一个
SQLWarning对象或null(如果没有警告) - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法
-
clearWarnings
清除此Statement对象上报告的所有警告。调用此方法后,方法getWarnings将返回null,直到为此Statement对象报告新警告。- 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法
-
setCursorName
将SQL游标名称设置为给定的String,随后将由Statement对象execute方法使用。然后可以在SQL定位更新或删除语句中使用此名称,以标识由该语句生成的ResultSet对象中的当前行。如果数据库不支持定位更新/删除,此方法将不执行任何操作。为确保游标具有支持更新的适当隔离级别,游标的SELECT语句应具有形式SELECT FOR UPDATE。如果没有FOR UPDATE,定位更新可能失败。注意: 根据定义,定位更新和删除的执行必须由与生成用于定位的
ResultSet对象的Statement对象不同的Statement对象执行。此外,游标名称必须在连接内是唯一的。- 参数:
-
name- 新游标名称,必须在连接内是唯一的 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法
-
execute
执行给定的SQL语句,可能返回多个结果。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。execute方法执行SQL语句并指示第一个结果的形式。然后必须使用getResultSet或getUpdateCount方法检索结果,并使用getMoreResults移动到任何后续结果。注意: 不能在
PreparedStatement或CallableStatement上调用此方法。- 参数:
-
sql- 任何SQL语句 - 返回:
-
如果第一个结果是
ResultSet对象,则为true;如果是更新计数或没有结果,则为false - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,该方法在PreparedStatement或CallableStatement上调用 -
SQLTimeoutException- 当驱动程序确定已超过由setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的Statement时 - 参见:
-
getResultSet
将当前结果检索为ResultSet对象。每个结果只能调用一次此方法。- 返回:
-
当前结果作为
ResultSet对象,如果结果是更新计数或没有更多结果,则为null - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
getUpdateCount
将当前结果检索为更新计数;如果结果是ResultSet对象或没有更多结果,则返回-1。每个结果只能调用一次此方法。- 返回:
-
当前结果作为更新计数;如果当前结果是
ResultSet对象或没有更多结果,则为-1 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
getMoreResults
移动到此Statement对象的下一个结果,如果是ResultSet对象,则返回true,并隐式关闭使用getResultSet方法获取的任何当前ResultSet对象。当以下条件为真时,没有更多结果:
// stmt is a Statement object ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))- 返回:
-
如果下一个结果是
ResultSet对象,则为true;如果是更新计数或没有更多结果,则为false - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 参见:
-
setFetchDirection
为ResultSet对象设置从数据库表中提取行的方向的提示,该提示是从此Statement对象生成的结果集的默认值。默认值为ResultSet.FETCH_FORWARD。请注意,此方法设置由此
Statement对象生成的结果集的默认提取方向。每个结果集都有其自己的方法来获取和设置其自己的提取方向。- 参数:
-
direction- 处理行的初始方向 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或给定的方向不是ResultSet.FETCH_FORWARD、ResultSet.FETCH_REVERSE或ResultSet.FETCH_UNKNOWN之一 - 自:
- 1.2
- 参见:
-
getFetchDirection
检索从此Statement对象生成的结果集的默认提取方向。如果此Statement对象未通过调用方法setFetchDirection设置提取方向,则返回值是特定于实现的。- 返回:
-
从此
Statement对象生成的结果集的默认提取方向 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自1.2版本起:
- 1.2
- 另请参阅:
-
setFetchSize
给JDBC驱动程序一个提示,指示在需要更多行以生成由此Statement对象生成的ResultSet对象时应从数据库中提取的行数。如果指定的值为零,则忽略提示。默认值为零。- 参数:
-
rows- 要提取的行数 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,或者条件rows >= 0不满足。 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getFetchSize
检索从此Statement对象生成的ResultSet对象的默认提取大小的结果集行数。如果此Statement对象未通过调用setFetchSize方法设置提取大小,则返回值是特定于实现的。- 返回:
-
从此
Statement对象生成的结果集的默认提取大小 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getResultSetConcurrency
检索由此Statement对象生成的ResultSet对象的结果集并发性。- 返回:
-
ResultSet.CONCUR_READ_ONLY或ResultSet.CONCUR_UPDATABLE之一 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自1.2版本起:
- 1.2
-
getResultSetType
检索由此Statement对象生成的ResultSet对象的结果集类型。- 返回:
-
ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE之一 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自1.2版本起:
- 1.2
-
addBatch
将给定的SQL命令添加到此Statement对象的当前命令列表中。通过调用方法executeBatch,可以执行此列表中的命令作为批处理。注意:无法在
PreparedStatement或CallableStatement上调用此方法。- 参数:
-
sql- 通常是SQLINSERT或UPDATE语句 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,驱动程序不支持批量更新,该方法在PreparedStatement或CallableStatement上调用 - 自1.2版本起:
- 1.2
- 另请参阅:
-
clearBatch
清空此Statement对象的当前SQL命令列表。- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或驱动程序不支持批量更新 - 自1.2版本起:
- 1.2
- 另请参阅:
-
executeBatch
将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回一个更新计数数组。返回的数组的int元素按照批处理中添加命令的顺序进行排序。方法executeBatch返回的数组中的元素可能是以下之一:- 大于或等于零的数字--表示命令已成功处理,并且是一个更新计数,给出了受命令执行影响的数据库中的行数
- 值为
SUCCESS_NO_INFO--表示命令已成功处理,但受影响的行数未知如果批量更新中的某个命令未能正确执行,此方法将抛出
BatchUpdateException,JDBC驱动程序可能会或可能不会继续处理批处理中的其余命令。但是,驱动程序的行为必须与特定DBMS一致,即始终继续处理命令或永远不继续处理命令。如果驱动程序在失败后继续处理,方法BatchUpdateException.getUpdateCounts返回的数组将包含与批处理中的命令数量相同的元素,至少其中一个元素将是以下之一: - 值为
EXECUTE_FAILED--表示命令未能成功执行,仅在驱动程序在命令失败后继续处理命令时发生
为了适应在抛出
BatchUpdateException对象后继续处理批量更新命令的选项,Java 2 SDK标准版1.3中的可能实现和返回值已进行了修改。- 返回:
- 包含批处理中每个命令的一个元素的更新计数数组。数组的元素按照添加到批处理中的命令的顺序进行排序。
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或驱动程序不支持批量语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateException(SQLException的子类)。 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getConnection
检索生成此Statement对象的Connection对象。- 返回:
- 生成此语句的连接
- 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自1.2版本起:
- 1.2
-
getMoreResults
移动到此Statement对象的下一个结果,根据给定标志指定的指令处理任何当前ResultSet对象,并在下一个结果是ResultSet对象时返回true。当以下条件为真时,没有更多的结果:
// stmt是一个Statement对象 ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))- 参数:
-
current- 表示应如何处理使用方法getResultSet获取的当前ResultSet对象的以下Statement常量之一:Statement.CLOSE_CURRENT_RESULT、Statement.KEEP_CURRENT_RESULT或Statement.CLOSE_ALL_RESULTS - 返回:
-
如果下一个结果是
ResultSet对象,则返回true;如果是更新计数或没有更多结果,则返回false - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或提供的参数不是以下之一:Statement.CLOSE_CURRENT_RESULT、Statement.KEEP_CURRENT_RESULT或Statement.CLOSE_ALL_RESULTS -
SQLFeatureNotSupportedException- 如果DatabaseMetaData.supportsMultipleOpenResults返回false,并且提供了Statement.KEEP_CURRENT_RESULT或Statement.CLOSE_ALL_RESULTS作为参数 - 自1.4版本起:
- 1.4
- 另请参阅:
-
getGeneratedKeys
检索由于执行此Statement对象而创建的任何自动生成的键。如果此Statement对象未生成任何键,则返回一个空的ResultSet对象。注意:如果未指定表示自动生成键的列,则JDBC驱动程序实现将确定最能代表自动生成键的列。
- 返回:
-
一个
ResultSet对象,其中包含由此Statement对象执行生成的自动生成的键 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并使用给定的标志向驱动程序发出信号,指示是否应该使此Statement对象生成的自动生成的键可用于检索。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT,UPDATE或DELETE;或者返回空值的SQL语句,如DDL语句。 -
autoGeneratedKeys- 一个指示是否应该使自动生成的键可用于检索的标志;以下常量之一:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS - 返回:
- 要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句返回一个ResultSet对象,给定的常量不是允许的常量之一,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的索引。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT,UPDATE或DELETE;或者返回空值的SQL语句,如DDL语句。 -
columnIndexes- 一个列索引数组,指示应该从插入行返回的列 - 返回:
- 要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,SQL语句返回一个ResultSet对象,此方法提供的第二个参数不是有效列索引的int数组,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的名称。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT,UPDATE或DELETE;或者返回空值的SQL语句,如DDL语句。 -
columnNames- 一个包含应该从插入行返回的列名称的数组 - 返回:
-
要么是
INSERT,UPDATE或DELETE语句的行数,要么是返回空值的SQL语句的0 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,SQL语句返回一个ResultSet对象,此方法提供的第二个参数不是有效列名称的String数组,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自从:
- 1.4
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示任何自动生成的键应该可用于检索。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略此信号。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。
execute方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet或getUpdateCount方法检索结果,并使用getMoreResults移动到任何后续结果。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- 任何SQL语句 -
autoGeneratedKeys- 一个常量,指示是否应该使用getGeneratedKeys方法使自动生成的键可用于检索;以下常量之一:Statement.RETURN_GENERATED_KEYS或Statement.NO_GENERATED_KEYS - 返回:
-
如果第一个结果是
ResultSet对象,则为true;如果是更新计数或没有结果,则为false - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,此方法提供的第二个参数不是Statement.RETURN_GENERATED_KEYS或Statement.NO_GENERATED_KEYS,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持具有常量Statement.RETURN_GENERATED_KEYS的此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自从:
- 1.4
- 参见:
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的索引。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。
execute方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet或getUpdateCount方法检索结果,并使用getMoreResults移动到任何后续结果。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- 任何SQL语句 -
columnIndexes- 插入行中应该可通过调用getGeneratedKeys方法检索的列的索引数组 - 返回:
-
如果第一个结果是
ResultSet对象,则返回true; 如果是更新计数或没有结果,则返回false - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,传递给此方法的int数组中的元素不是有效的列索引,此方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定已超过setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的Statement时 - 自:
- 1.4
- 参见:
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并通知驱动程序应该使给定数组中指示的自动生成键可供检索。此数组包含目标表中包含应该可用的自动生成键的列的名称。如果SQL语句不是INSERT语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常,除非您正在执行可能返回多个结果的存储过程,或者您正在动态执行未知的SQL字符串,否则您可以忽略此情况。
execute方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet或getUpdateCount方法检索结果,并使用getMoreResults移动到任何后续结果。注意:此方法不能在
PreparedStatement或CallableStatement上调用。- 参数:
-
sql- 任何SQL语句 -
columnNames- 插入行中应该可通过调用getGeneratedKeys方法检索的列的名称数组 - 返回:
-
如果下一个结果是
ResultSet对象,则返回true; 如果是更新计数或没有更多结果,则返回false - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,传递给此方法的String数组中的元素不是有效的列名称,此方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定已超过setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的Statement时 - 自:
- 1.4
- 参见:
-
getResultSetHoldability
检索由此Statement对象生成的ResultSet对象的结果集可保持性。- 返回:
-
ResultSet.HOLD_CURSORS_OVER_COMMIT或ResultSet.CLOSE_CURSORS_AT_COMMIT - 抛出:
-
SQLException- 如果发生数据库访问错误或此方法在关闭的Statement上调用 - 自:
- 1.4
-
isClosed
检索此Statement对象是否已关闭。如果方法close已在其上调用,则Statement已关闭,或者它被自动关闭。- 返回:
-
如果此
Statement对象已关闭,则返回true; 如果仍然打开,则返回false - 抛出:
-
SQLException- 如果发生数据库访问错误 - 自:
- 1.6
-
setPoolable
请求将Statement池化或不池化。指定的值是对语句池实现的提示,指示应用程序是否希望将语句池化。语句池管理器是否使用提示取决于语句池管理器。语句的可池化值适用于驱动程序实现的内部语句缓存以及应用程序服务器和其他应用程序实现的外部语句缓存。
默认情况下,创建时
Statement不可池化,创建PreparedStatement和CallableStatement时可池化。- 参数:
-
poolable- 如果为true,则请求将语句池化,如果为false,则请求不将语句池化 - 抛出:
-
SQLException- 如果此方法在关闭的Statement上调用 - 自:
- 1.6
-
isPoolable
返回一个值,指示Statement是否可池化。- 返回:
-
如果
Statement可池化,则返回true; 否则返回false - 抛出:
-
SQLException- 如果此方法在关闭的Statement上调用 - 自:
- 1.6
- 参见:
-
closeOnCompletion
指定当所有其依赖结果集关闭时,将关闭此Statement。如果Statement的执行不产生任何结果集,则此方法无效。注意:多次调用
closeOnCompletion不会切换此Statement上的效果。但是,对closeOnCompletion的调用会影响随后执行的语句以及当前具有打开的依赖结果集的语句。- 抛出:
-
SQLException- 如果此方法在关闭的Statement上调用 - 自:
- 1.7
-
isCloseOnCompletion
返回一个值,指示当所有其依赖结果集关闭时,此Statement是否将被关闭。- 返回:
-
如果所有依赖结果集关闭时此
Statement将被关闭,则返回true; 否则返回false - 抛出:
-
SQLException- 如果此方法在关闭的Statement上调用 - 自:
- 1.7
-
getLargeUpdateCount
将当前结果检索为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。每个结果只应调用一次此方法。当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将抛出
UnsupportedOperationException- 返回:
-
将当前结果作为更新计数; 如果当前结果是
ResultSet对象或没有更多结果,则返回-1 - 抛出:
-
SQLException- 如果发生数据库访问错误或此方法在关闭的Statement上调用 - 自:
- 1.8
- 参见:
-
setLargeMaxRows
设置由此Statement对象生成的任何ResultSet对象可以包含的最大行数限制为给定数字。如果超过限制,则多余的行将被静默丢弃。当行限制可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将抛出
UnsupportedOperationException- 参数:
-
max- 新的最大行限制; 零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用或条件max >= 0不满足 - 自:
- 1.8
- 参见:
-
getLargeMaxRows
检索由此Statement对象生成的ResultSet对象可以包含的最大行数。如果超过此限制,则多余的行将被静默丢弃。当返回的行限制可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将返回
0- 返回:
-
由此
Statement对象生成的ResultSet对象的当前最大行数;零表示没有限制 - 抛出:
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 自:
- 1.8
- 参见:
-
executeLargeBatch
将一批命令提交到数据库进行执行,如果所有命令都成功执行,则返回一个更新计数数组。返回的数组中的long元素按照批处理中添加命令的顺序进行排序。方法executeLargeBatch返回的数组元素可能是以下之一:- 大于或等于零的数字 - 表示命令成功处理并且是一个更新计数,给出了数据库中受命令执行影响的行数
- 值为
SUCCESS_NO_INFO- 表示命令成功处理,但受影响的行数未知如果批处理中的某个命令未能正确执行,此方法将抛出
BatchUpdateException,JDBC驱动程序可能会或可能不会继续处理批处理中的其余命令。但是,驱动程序的行为必须与特定的DBMS一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在失败后继续处理,方法BatchUpdateException.getLargeUpdateCounts返回的数组将包含与批处理中的命令数量相同的元素,至少其中一个元素将是以下之一: - 值为
EXECUTE_FAILED- 表示命令未能成功执行,仅在驱动程序在命令失败后继续处理命令时发生
当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将抛出
UnsupportedOperationException- 返回:
- 包含批处理中每个命令的一个元素的更新计数数组。数组的元素按照将命令添加到批处理的顺序进行排序。
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,或驱动程序不支持批处理语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateException(SQLException的子类)。 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自:
- 1.8
- 参见:
-
executeLargeUpdate
执行给定的SQL语句,可以是INSERT、UPDATE或DELETE语句,或者返回空值的SQL语句,例如SQL DDL语句。当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。注意:此方法不能在
PreparedStatement或CallableStatement上调用。默认实现将抛出
UnsupportedOperationException- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT、UPDATE或DELETE;或返回空值的SQL语句,如DDL语句。 - 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句生成了ResultSet对象,该方法在PreparedStatement或CallableStatement上调用 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并使用给定的标志向驱动程序指示此Statement对象生成的自动生成键是否应该可用于检索。如果SQL语句不是INSERT语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。注意:此方法不能在
PreparedStatement或CallableStatement上调用。默认实现将抛出
SQLFeatureNotSupportedException- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT、UPDATE或DELETE;或返回空值的SQL语句,如DDL语句。 -
autoGeneratedKeys- 指示是否应该为检索提供自动生成键的标志;以下常量之一:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS - 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句返回了ResultSet对象,给定的常量不是允许的常量之一,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持具有常量Statement.RETURN_GENERATED_KEYS的此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并向驱动程序指示应该为检索提供的自动生成键。此数组包含目标表中包含应该提供的自动生成键的列的索引。如果SQL语句不是INSERT语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。注意:此方法不能在
PreparedStatement或CallableStatement上调用。默认实现将抛出
SQLFeatureNotSupportedException- 参数:
-
sql- SQL数据操作语言(DML)语句,如INSERT、UPDATE或DELETE;或返回空值的SQL语句,如DDL语句。 -
columnIndexes- 包含应从插入行返回的列的列索引数组 - 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,SQL语句返回了ResultSet对象,此方法的第二个参数不是有效列索引的int数组,该方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并向驱动程序指示应该为检索提供的自动生成键。此数组包含目标表中包含应该提供的自动生成键的列的名称。如果SQL语句不是INSERT语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。当返回的行数可能超过
Integer.MAX_VALUE时,应使用此方法。注意:此方法不能在
PreparedStatement或CallableStatement上调用。默认实现将抛出
SQLFeatureNotSupportedException- 参数:
-
sql- 一个SQL数据操作语言(DML)语句,比如INSERT,UPDATE或DELETE;或者一个不返回任何内容的SQL语句,比如DDL语句。 -
columnNames- 一个包含应该从插入行返回的列名的数组 - 返回:
-
对于
INSERT,UPDATE或DELETE语句,返回行数;对于不返回任何内容的SQL语句,返回0 - 抛出:
-
SQLException- 如果发生数据库访问错误,此方法在关闭的Statement上调用,SQL语句返回一个ResultSet对象,此方法提供的第二个参数不是一个String数组,其元素是有效的列名,此方法在PreparedStatement或CallableStatement上调用 -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定已超过setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的Statement时 - 自版本:
- 1.8
-
enquoteLiteral
返回一个用单引号括起来的String。字符串中的任何单引号都将被替换为两个单引号。转换示例: 值 结果 Hello 'Hello' G'Day 'G''Day' 'G''Day' '''G''''Day''' I'''M 'I''''''M' - 实现注意:
- JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
- 参数:
-
val- 一个字符字符串 - 返回:
- 一个用单引号括起来的字符串,其中每个单引号都转换为两个单引号
- 抛出:
-
NullPointerException- 如果val为null -
SQLException- 如果发生数据库访问错误 - 自版本:
- 9
-
enquoteIdentifier
返回一个SQL标识符。如果identifier是一个简单的SQL标识符:- 如果
alwaysQuote为false,则返回原始值 - 如果
alwaysQuote为true,则返回一个带引号的标识符
identifier不是一个简单的SQL标识符,则如果尚未存在,将用双引号括起identifier。如果数据源不支持双引号作为限定标识符,标识符应该用从DatabaseMetaData.getIdentifierQuoteString()返回的字符串括起来。如果数据源不支持限定标识符,则应抛出SQLFeatureNotSupportedException。如果
identifier包含任何无效的限定标识符字符或标识符长度对于数据源无效,则将抛出SQLException。- 实现要求:
-
默认实现使用以下标准来确定有效的简单SQL标识符:
- 字符串未用双引号括起
- 第一个字符是从a到z或从A到Z的字母字符
- 名称仅包含字母数字字符或字符“_”
SQLException:identifier包含null字符或双引号且不是简单的SQL标识符。identifier的长度小于1或大于128个字符
转换示例: 标识符 alwaysQuote 结果 Hello false Hello Hello true "Hello" G'Day false "G'Day" "Bruce Wayne" false "Bruce Wayne" "Bruce Wayne" true "Bruce Wayne" GoodDay$ false "GoodDay$" Hello"World false SQLException "Hello"World" false SQLException - 实现注意:
- JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
- 参数:
-
identifier- 一个SQL标识符 -
alwaysQuote- 指示是否应将简单的SQL标识符返回为带引号的标识符 - 返回:
- 一个简单的SQL标识符或一个带引号的标识符
- 抛出:
-
SQLException- 如果标识符不是有效的标识符 -
SQLFeatureNotSupportedException- 如果数据源不支持带引号的标识符 -
NullPointerException- 如果标识符为null - 自版本:
- 9
- 如果
-
isSimpleIdentifier
检索identifier是否是一个简单的SQL标识符。- 实现要求:
-
默认实现使用以下标准来确定有效的简单SQL标识符:
- 字符串未用双引号括起
- 第一个字符是从a到z或从A到Z的字母字符
- 字符串仅包含字母数字字符或字符“_”
- 字符串长度在1到128个字符之间,包括边界值
转换示例: 标识符 简单标识符 Hello true G'Day false "Bruce Wayne" false GoodDay$ false Hello"World false "Hello"World" false - 实现注意:
- JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
- 参数:
-
identifier- 一个SQL标识符 - 返回:
- 如果是简单的SQL标识符,则返回true,否则返回false
- 抛出:
-
NullPointerException- 如果标识符为null -
SQLException- 如果发生数据库访问错误 - 自版本:
- 9
-
enquoteNCharLiteral
返回一个用单引号括起来且以大写字母N为前缀的表示国家字符集文字的String。字符串中的任何单引号都将被替换为两个单引号。转换示例: 值 结果 Hello N'Hello' G'Day N'G''Day' 'G''Day' N'''G''''Day''' I'''M N'I''''''M' N'Hello' N'N''Hello''' - 实现注意:
- JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。enquoteNCharLiteral的实现可能接受与同一驱动程序实现的enquoteLiteral接受的字符集不同。
- 参数:
-
val- 一个字符字符串 - 返回:
- 将参数中的每个单引号字符替换为两个单引号字符,然后将整个结果以'N'为前缀。
- 抛出:
-
NullPointerException- 如果val为null -
SQLException- 如果发生数据库访问错误 - 自版本:
- 9
-