Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用什么来代替stmt.executeUpdate()?_Java_Sql_Jdbc - Fatal编程技术网

Java 我应该使用什么来代替stmt.executeUpdate()?

Java 我应该使用什么来代替stmt.executeUpdate()?,java,sql,jdbc,Java,Sql,Jdbc,当我使用stmt.executeUpdate()时,如果我使用executeQuery,它将不会返回我刚刚插入数据库的记录,我在创建stmt对象时设置了coccurency和type 我的桌子是空的 create Table Customer( Customer_ID int, Age int, Contact_No varchar(20), First_Name varchar(20), Last_Name varchar(20), PRIMARY KEY(Customer_ID) ); 及

当我使用stmt.executeUpdate()时,如果我使用executeQuery,它将不会返回我刚刚插入数据库的记录,我在创建stmt对象时设置了coccurency和type

我的桌子是空的

create Table Customer(
Customer_ID int,
Age int,
Contact_No varchar(20),
First_Name varchar(20),
Last_Name varchar(20),
PRIMARY KEY(Customer_ID)
);

我的Java代码:

try {

    st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    st.executeUpdate("insert into Customer values(Default,"+age+",'"+contact_no+"','"+first+"','"+last+"')");

    ResultSet set = st.executeQuery("select Customer_ID from Customer where First_Name = '"+first+"' and Last_Name ='"+last+"' and contact_no ='"+contact_no+")");
    int id = set.getInt(1);
    st.executeUpdate("insert into Customer_Address Values("+id+",'"+add1+"','"+add2+"','"+city+"',"+pincode+",'"+state+"')");
}
catch (SQLException ex) {
    Logger.getLogger(Screen1.class.getName()).log(Level.SEVERE, null, ex);
}
替换

ResultSet set = st.executeQuery("select Customer_ID from Customer where First_Name = '"+first+"' and last ='"+last+"' and contact_no ='"+contact_no+")");

ResultSet set = st.executeQuery("select Customer_ID from Customer where First_Name = '"+first+"' and last ='"+last+"' and contact_no ='"+contact_no+"')");

如果只需要插入行的ID,请使用
语句。返回\u生成的\u键,如下所示:

st.executeUpdate("INSERT INTO ...", Statement.RETURN_GENERATED_KEYS);
int id;
try (ResultSet rs = st.getGeneratedKeys()) {
    rs.next();
    id = rs.getInt(1);
}

// ...

您至少应该指定要插入的列。i、 e.插入t_表(col1,col2)值(val1,val2)您的插入值顺序错误,与表定义不匹配。您正在将年龄插入First_Name…。您对此问题所做的编辑是否实际反映了您的表架构?我是leaving@Adam是的,mb我在db中更改了一些内容,这是正确的预期顺序。我的问题是,一旦我这样做,dbms(postgres)会给它一个id。默认情况下,我想找回该id,但executequery不会还给它。它会在Resultset=st.executequery(“”)处抛出一个空指针异常;Line,我希望在将这些值插入SQL语句之前先对它们进行清理!使用
PreparedStatement
是明智的。非常感谢:DDDD
st.executeUpdate("INSERT INTO ...", Statement.RETURN_GENERATED_KEYS);
int id;
try (ResultSet rs = st.getGeneratedKeys()) {
    rs.next();
    id = rs.getInt(1);
}

// ...