句子中实行,实行升级和执行查询的差别。

句子插口给予了三种实行SQL句子的方式:executeQuery,executeUpdate和execute。应用哪一种方式由SQL句子造成的信息决策。

方式executeQuery。

用以造成单独結果集的句子,如SELECT句子。ExecuteQuery是实行SQL句子最常见的方式。该方式用以实行SELECT句子,这基本上是最常见的SQL句子。

方式executeUpdate。

用以实行INSERT,UPDATE或DELETE句子和SQL DDL(数据信息定义语言)句子,如CREATE TABLE和DROP TABLE。INSERT,UPDATE或DELETE句子的实际效果是改动表格中零行或几行中的一列或两列。executeUpdate的传参是一个整数金额,表明受影响的个数(即升级记数)。针对不对行开展使用的句子,如CREATE TABLE或DROP TABLE,executeUpdate的传参自始至终为零。

往往应用executeUpdate方式,是由于createTableCoffees中的SQL句子是DDL(数据信息定义语言)句子。创建表,变更表和删除表全是DDL句子的事例,应当由executeUpdate方式实行。您还能够从它的名字中见到,executeUpdate方式也用以实行用以升级表的SQL句子。事实上,executeUpdate升级表比创建表耗费大量的時间,由于表只须要建立一次,但它常常被升级。

方式实行:

用以实行回到好几个結果集,好几个升级记数或二者组成的句子。由于大部分开发人员都不用这一高級作用。

仅当句子能够回到好几个結果集目标,好几个升级记数或結果集目标和升级记数的组成时,才应应用execute方式。当一个sql语句强制执行或是一个不明的SQL字符串数组被动态实行时(换句话说,应用软件程序猿在编译程序时是不明的),很有可能会出现好几个結果,虽然这类状况没有产生。

由于execute方式解决非传统的状况,因此得到結果必须一些特别的解决也就习以为常了。比如,假如已经知道一个全过程回到2个結果集,则在应用execute方式实行该全过程后,务必启用getResultSet方式来获得第一个結果集,随后启用适度的getXXX方式来获得当中的值。要得到第二个結果集,必须先启用getMoreResults方式,随后启用getResultSet方式。假如已经知道一个全过程回到2个升级记数,最先启用方式getUpdateCount,随后启用getMoreResults,随后再度启用getUpdateCount。

当你永远不知道该回什么时,状况就更繁杂了。实行方式回到真;假如結果是ResultSet目标;假如結果是Java int,则回到false。假如回到int,则代表着数据是升级记数,或是实行的句子是DDL指令。启用execute方式后要做的第一件事是启用getResultSet或getUpdateCount。能够启用getResultSet方式来获得2个或好几个ResultSet目标的第一个目标;或是启用getUpdateCount方式获得2个或大量升级记数的第一个升级记数的內容。

当SQL句子的結果并不是結果集时,方式getResultSet将回到null。这也许代表着数据是升级的记数,或是沒有别的結果。在这样的情形下,分辨null真真正正含意的唯一方式是启用getUpdateCount方式,该方式将回到一个整数金额。该整数金额是受启用句子危害的个数;如果是-1,表明結果是結果集或是沒有結果。假如方式getResultSet回到null(表明結果并不是ResultSet目标),传参-1表明没别的結果。换句话说,当以下标准创立时,沒有結果(或沒有别的結果):

((stmt . getresultset()= = null)& &(stmt . getupdatecount()= = =-1))

假如早已启用了方式getResultSet,而且早已解决了它回到的ResultSet目标,则必须启用方式getMoreResults来明确是不是也有别的結果集或是升级记数。假如getMoreResults回到true,则必须再度启用getResultSet来查找下一个結果集。如上所述,假如getResultSet回到null,则必须启用getUpdateCount来查验null是表明結果是升级记数或是沒有别的結果。

当getMoreResults回到false时,代表着该SQL句子回到升级记数或沒有别的結果。因而,必须启用getUpdateCount方式来查验是哪一种状况。在这样的情形下,当以下标准创立时,代表着沒有别的結果:

((stmt . getmoreresults()= = false)& &(stmt . getupdatecount()= = =-1))

下边的编码演试了一种方式,用以确定根据启用execute方式转化成的全部結果集和升级记数早已被浏览:

stmt . execute(query stringwithinunknown results);

while(true){ 0

int RowCount = stmt . GetupdateCount();

If (rowCount > 0) {//这也是升级记数。

System.out.println("个数已变更= " 记数");

stmt . getmoresults();

再次;

}

If (rowCount == 0) {// DDL指令或0升级。

沒有行被调整或句子被拒绝

指令”);

stmt . getmoresults();

再次;

}

//在这儿实行后,证实有結果集。

//或是沒有别的結果。

ResultSet rs = stmt.getResultSet

if (rs!= null){ 0

。//应用元数据获取相关結果集列的信息内容。

while(RS . next()){ 0

...//事件处理。

stmt . getmoresults();

再次;

}

摆脱;//沒有别的結果。

executesql方法-数据库execute用法-第1张图片

评论(0条)

刀客源码 游客评论