更新表內的單個值與Java目前我有這樣的代碼:使用MySQL
PreparedStatement prepCust = connection.prepareStatement("insert into Customer values (?, ?, ?, ?, ?, ?);");
ResultSet results = connection.createStatement()
.executeQuery("SELECT phonenumber FROM customer WHERE phonenumber = " + cust.getPhoneNumber());
results.next();
try {
if (results.getString(1).equals(cust.getPhoneNumber())) {
System.out.println("User already exist in database, adding one to order count");
results = connection.createStatement().executeQuery(
"SELECT numberoforders FROM customer WHERE phonenumber = " + cust.getPhoneNumber());
results.next();
int updated = results.getInt(1) + 1;
System.out.println(updated);
results = connection.createStatement()
.executeQuery("SELECT * FROM customer WHERE phonenumber = " + cust.getPhoneNumber());
results.next();
prepCust.setString(1, results.getString(1));
prepCust.setString(2, results.getString(2));
prepCust.setString(3, results.getString(3));
prepCust.setString(4, results.getString(4));
prepCust.setInt(5, updated);
prepCust.setInt(6, results.getInt(6));
prepCust.executeUpdate();
}
} catch (SQLException sql) {
sql.printStackTrace();
prepCust.setString(1, cust.getfName());
prepCust.setString(2, cust.getlName());
prepCust.setString(3, cust.getAddress());
prepCust.setString(4, cust.getPhoneNumber());
prepCust.setInt(5, 1);
prepCust.setInt(6, 0);
prepCust.executeUpdate();
}
而且它訪問表是:
create table customer(
firstname varchar(50) NOT NULL,
lastname varchar(50) NOT NULL,
streetaddress varchar(150) NOT NULL,
phonenumber varchar(10) NOT NULL,
numberoforders int(11) default 1;
customer_id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(customer_id,phonenumber)
UNIQUE KEY customer_id (customer_id)
);
我的問題是,當我嘗試使用prepCust.setInt(5,someInt);更新一個值,然後嘗試執行更新,我會得到一個異常,說我從不輸入任何用於prepCust.setString(1,無論)的任何內容;等等。對於用trycatch包圍代碼的想法是,如果代碼拋出異常,那麼這必定意味着該表不存在於表內,並創建一個包含所有輸入數據的新字段。如果代碼沒有拋出異常,這意味着電話號碼確實存在於表格內,並找到該電話號碼所在的行,並將其添加到客戶具有的訂單數量中。我現在用這個代碼的問題是,它會爲表添加一整列新信息,即使它具有相同的電話號碼和客戶ID,拋出一個異常告訴我,然後我堅持準確的值同樣的地方值不增加,我需要。我怎樣才能更新列中的單個值?無論如何要用準備好的聲明來做到這一點?
請首先清理您的術語,字段,列,行......與他們混淆......這意味着什麼:「創建一個包含所有輸入數據的新字段」?它是一排嗎?等等......第二:你是否試圖用INSERT語句更新?第三:你的表不能有兩個具有相同customer_id和phonenumber的ROW(不是列)。不要試圖插入這樣的... – Vadim
PS。在RDBMS中,關於TABLE結構只有兩個主要術語:COLUMN和ROW。有時候人們把COLUMN稱爲FIELD和ROW作爲RECORD,這是可以接受的...... – Vadim
謝謝你的回覆,並且對於壞的術語感到抱歉,我對SQL很陌生。我想到了。我不得不使用準備好的語句中的SQL命令更新,並設置了numberoforders =? phonenumber =?然後將其設置爲使用setString和setInt mehtods。 – Varri