2016-04-24 75 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,其中當前年份的最後兩位數字+最後一次插入的ID與4位前導0。例如,如果最後插入的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

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

只使用IDcom

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

我想你打我吧.. – cableload

+0

@cableload沒關係的,還是給你了:) – FewFlyBy

+0

通過的球員的方式,它的工作原理,但我得到YY-0001,而不是或16-0001 – FewFlyBy

1

您申報that.You第二個MySqlCommand IDCOM,所以你應該添加參數添加傳遞給舊的命令對象。

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