を使用して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で囲むことについての私の考えは、コードが例外をスローした場合、そのフィールドがテーブル内に存在しないことと、入力されたすべてのデータを含む新しいフィールドを作成する必要があることです。コードで例外がスローされない場合は、テーブル内に電話番号が存在し、電話番号がどの行にあるかを調べ、顧客の注文数に1を加算します。このコードで私の問題は、同じ電話番号と顧客IDを持っていても、テーブルに情報の新しい列を追加し、それを伝える例外をスローしてから、正確な値私が必要とする値が増えない場所と同じです。列内の単一の値を更新するにはどうすればよいですか?準備された声明でそれを行うためにとにかくありますか?
まず、専門用語、フィールド、列、行を掃除してください。あなたはそれらを混乱させました。つまり、「入力されたすべてのデータを含む新しいフィールドを作成しますか?それは行についてですか?など... 2番目:INSERTステートメントで更新しようとしていますか?第3に、あなたのテーブルは、同じcustomer_idとphonenumberを持つ2つのROW(列ではない)を持つことはできません。そのようなものを挿入しようとしないでください... – Vadim
PS。 RDBMSでは、TABLE構造に関する2つの主要な用語があります:列と行。いつか人々はCOLUMNをFIELDとROWとしてRECORDと呼びますが、それは受け入れられます... – Vadim
返事をありがとう、悪い用語については申し訳ありませんが、私はSQLにはとても慣れています。私はそれを考え出した。私は準備された文の中でSQLコマンドの更新を使用しなければならず、numberoforders =を設定しましたか? phonenumber =? setStringとsetIntメソッドを使用してそれらを設定します。 – Varri