2016-09-22 112 views
-1

当我使用stmt.executeUpdate(),如果我用的executeQuery它不会返回记录我刚刚插入到数据库我没有设置coccurency和类型在创建语句对象我应该用什么来代替stmt.executeUpdate()?

我的表是

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_Address(
Customer_ID int, 
Address_Line1 varchar(50), 
Address_Line2 varchar(50), 
City varchar(20), 
Pincode int, 
State varchar(25), 
PRIMARY KEY(Customer_ID,Address_Line1) 
); 

我的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); 
} 
+1

你至少应该指定要插入的列。即插入到t_table(col1,col2)值(val1,val2)中 – Adam

+0

您的插入值失常,并且与表定义不匹配。您将年龄插入First_Name ..... – Adam

+0

对此问题的编辑是否真正反映了您的表格架构?我要离开 – Adam

回答

0

如果你只是想插入行的ID,使用Statement.RETURN_GENERATED_KEYS像这样:

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

// ... 
+0

DAMN非常感谢:DDDD –

0

更换

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+"')"); 
相关问题