应该用那个查询语句

2025-01-27 12:24:38
推荐回答(5个)
回答1:

应该使用executeUpdate()不需要ResultSet
需要ResultSet
接收的就是executeQuery()
executeUpdate()返回的是个int 想清楚逻辑

回答2:

这明显是插入语句,应使用executeUpdate()
怎么可能是查询呢?

select @@identity ????

回答3:

当然是executeUpdate()啦,返回的是影响的行数,int,即如果插入成功返回1,否则返回0。

有"?"要用PreparedStatement,不能用Statement.返回值就一个int,不用ResultSet接受.

我算是明白你的意思了,不过自己没有想过这样用.大不了你分开写好了,在executeUpdate()插入数据,再用executeQuery()读出最后插入的行。

要不用SCOPE_IDENTITY、IDENT_CURRENT 试试?

回答4:

//解析过程如下:
create table b
(
ids int identity(1,1) primary key,
names varchar(20) not null
)

//源代码.
package com.zte.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class IdentitySQL {

private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs";
private static final String USER = "sa";
private static final String PWD = "";

public IdentitySQL() {
super();
// TODO Auto-generated constructor stub
}

public static Connection getConnection() {
Connection con = null;
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USER, PWD);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}

public static void insert(String value) {
try {
String sql = "insert into b values (?); select @@identity;";
PreparedStatement ps = getConnection().prepareStatement(sql);
ps.setString(1, value);
int res=ps.executeUpdate();

System.out.println(res);

}catch (Exception ex) {
ex.printStackTrace();
}

}

public static void main(String[] args) {
//System.out.println(getConnection());
String value = "test";
insert(value);
}

}

//因为语句是insert ,所以应该使用executeUpdate
若是使用executeQuery;他会将sql当成查询语句,但是根本不识别你这样的sql查询语句。

回答5:

最好把这个做一个存储过程来处理