コードは以下です。私のコードでは、プログラムがテキストボックスからすべての更新された値を取得するように、(既存のテーブルから) 既存の行を更新しています。「codonsAutoNum」という名前のテーブルautoNumberフィールドの最後(最後の列)にあります
データベースから値 (autonumber 値) を取得する方法がわかりません。「??」がある位置 (コード内) の値が必要です。
助けてくれてありがとう!
コード:
private void update_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string myInsertQuery =(String.Format("UPDATE tblCodons SET codonsCodon1='{0}', codonsCodon3='{1}', " +
"codonsTriplet1='{2}', codonsTriplet2='{3}', codonsTriplet3='{4}', codonsTriplet4='{5}', " +
"codonsTriplet5='{6}', codonsTriplet6='{7}', codonsFullName='{8}'" +
" WHERE codonsAutoNum='{9}'",codon1.Text, codon3.Text ,triplet1.Text, triplet2.Text,
triplet3.Text, triplet4.Text, triplet5.Text, triplet6.Text,
fullName.Text,??));
OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
編集:本当に混乱しました。私のコードはどのように思われるのでしょうか? 「SELECT @@identity」をどこに置く必要がありますか?そして、値を取得できない理由がわかりませんか? (更新がどこにあるかを把握するために、選択した行のインデックスとして必要です。これ(以下)を識別したときにうまく機能しましたが、フルネームフィールドを変更することはできませんでした..自動番号列よりも優れた解決策があります?
private void update_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string myInsertQuery =(String.Format("UPDATE tblCodons SET codonsCodon1='{0}', codonsCodon3='{1}', " +
"codonsTriplet1='{2}', codonsTriplet2='{3}', codonsTriplet3='{4}', codonsTriplet4='{5}', " +
"codonsTriplet5='{6}', codonsTriplet6='{7}', codonsFullName='{8}'" +
" WHERE codonsFullName = {9}",codon1.Text, codon3.Text ,triplet1.Text, triplet2.Text,
triplet3.Text, triplet4.Text, triplet5.Text, triplet6.Text,
fullName.Text,this.name));
OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
this.tblCodonsTableAdapter.Fill(this.myProjectDataSet.tblCodons);
name= fullname の保存された値で、クリックするたびに値が変化します
もう1つのクエスト。e.Row (テーブルをクリックするたびに保存したもの) で同じことをしようとしましたが、「System.Data.OleDb.OleDbException (0x80004005): can caue a duplicated values on the index, or on the mainKey または関係にあります" </p>