2016-04-24 8 views
1

おはよう!ASP.NET MySQL未定義パラメータ

私はここにコードを挿入しますが、決して更新しません。私が得る誤差はParameter '@id_number' must be definedです。

マイコード:

string query = "INSERT INTO pupil (`fname`, `lname`, `mi`) VALUES (@fn, @ln, @mi)"; 
MySqlCommand com = new MySqlCommand(query, connection); 

com.Parameters.AddWithValue("@fn", txtAddFName.Text); 
com.Parameters.AddWithValue("@ln", txtAddLName.Text); 
com.Parameters.AddWithValue("@mi", txtAddMI.Text); 
com.ExecuteNonQuery(); 

//create ID number 
long lastID = com.LastInsertedId; 
int length = 4; 
string currentYear = DateTime.Now.Year.ToString("yy"); 
string result = lastID.ToString().PadLeft(length, '0'); 
string id_number = currentYear + "-" + result ; 
string updateIDNumber = "UPDATE pupil SET [email protected]_number WHERE [email protected]_id"; 
MySqlCommand IDcom = new MySqlCommand(updateIDNumber, connection); 

com.Parameters.AddWithValue("@id_number", id_number); 
com.Parameters.AddWithValue("@pupil_id", lastID); 
IDcom.ExecuteNonQuery(); 

挿入コードは動作しますが、更新はできません。私がやりたかったのは、最後に挿入されたIDを取得し、そのフィールドid_numberを現在の年の最後の2桁+ 4つの先行0で最後に挿入されたIDで更新することです。たとえば、最後に挿入されたIDが1の場合、変数lastIDの値は16-0001になります。

方法によって、スキーマはこれです:

pupil_id INT(11) AUTO_INCREMENT 
fname VARCHAR(50) 
lname VARCHAR(50) 
mi VARCHAR(50) 
id_number VARCHAR(255) 

すべてのヘルプははるかに高く評価されるだろう。

答えて

2

あなたは間違ったコマンドのインスタンスを使用している:

com.Parameters.AddWithValue("@id_number", id_number); 
com.Parameters.AddWithValue("@pupil_id", lastID); 

代わりのcomだけIDcom

IDcom.Parameters.AddWithValue("@id_number", id_number); 
IDcom.Parameters.AddWithValue("@pupil_id", lastID); 
+0

私は – cableload

+0

は、まだあなたに最高を与える:)方法の連中によって – FewFlyBy

+0

、それは大丈夫です@cableloadそれは動作しますが、私が代わりにYY-0001を得たか、16から0001 – FewFlyBy

1

を使用しますが、二たMySqlCommand IDCOMを宣言したので、あなたが追加したthat.Youのパラメータを追加する必要がありますparamsを古いコマンドオブジェクトに追加します。

IDcom.Parameters.AddWithValue("@id_number", id_number); 
IDcom.Parameters.AddWithValue("@pupil_id", lastID);