2017-03-04 36 views
0

我想將以下詳細信息添加到數據庫表中。這個問題。答案和topicID [INT]輸入字符串在C#中沒有正確的格式錯誤[OffTopic]

C#代碼:

private void AddingQuestions() 
{ 
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=root;password=***;")) 
{ 
MySqlCommand cmd = new MySqlCommand("INSERT INTO questions (question, answer, topicID) VALUES (@Questions, @Answers, @TopicID);"); 
cmd.CommandType = CommandType.Text; 
cmd.Connection = connection; 
cmd.Parameters.AddWithValue("@Questions", TxtBoxQuestion.Text); 
cmd.Parameters.AddWithValue("@Answers", TxtboxAnswer.Text); 
cmd.Parameters.AddWithValue("@TopicID", Convert.ToInt32(TxtBoxTopicID.Text)); 
connection.Open(); 
cmd.Connection = connection; 
cmd.ExecuteNonQuery(); 
MessageBox.Show("Saved"); 
connection.Close(); 
} 
} 

類型 'System.FormatException' 的未處理的異常出現在mscorlib.dll

其他信息:輸入字符串的不以正確的格式。

在該行:

cmd.Parameters.AddWithValue("@TopicID", Convert.ToInt32(TxtBoxTopicID.Text)); 

而且我知道它的好習慣使用parametrised SQL,避免SQL注入。我使用參數化的SQL?

+2

確保'TxtBoxTopicID'中的文本是一個有效整數 –

+0

在顯示錶單之前,我得到此異常。即當我點擊指向我這個頁面的按鈕時。即使在文本框中添加任何整數值,也會拋出異常。 – SnapShot

+2

如果您還沒有輸入任何內容,則TextBox的值爲空或空字符串,該字符串不能轉換爲int。您應該在打開表格時不要調用方法,或者用有效的默認值填充文本框 –

回答

1

正如在評論中討論的,問題是你嘗試,其實沒有值的文本框的值轉換的形式

可能的解決方案打開時(這是空或空字符串):

  • 形式
  • 的啓動過程中不要調用方法與有效的默認值

要回答的填色的文本框問題的第二部分: 是的,您已經在使用參數化查詢。

+0

是的,我犯的錯誤是我在「加載形式」函數中調用函數而不是按鈕。非常感謝。 – SnapShot