Java 我应该使用什么来代替stmt.executeUpdate()?
当我使用stmt.executeUpdate()时,如果我使用executeQuery,它将不会返回我刚刚插入数据库的记录,我在创建stmt对象时设置了coccurency和type 我的桌子是空的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) ); 及
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);
}
// ...