插入失败
本文关键字:失败 插入 | 更新日期: 2023-09-27 18:32:56
int dose = Convert.ToInt16(DoseTextBox.Text.ToString());
try
{
SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(@Medication,@Dose,@manufacture)", mcs);
AddMed.Parameters.Add("@Medication", SqlDbType.NVarChar).Value = MedName.Text.ToString();
AddMed.Parameters.Add("@Dose", SqlDbType.Int).Value = dose;
AddMed.Parameters.Add("@manufacture", SqlDbType.NVarChar).Value = ManuDB.Text.ToString();
mcs.Open();
AddMed.ExecuteNonQuery();
mcs.Close();
MessageBox.Show("Med Added", "Done!");
}
catch (Exception)
{
MessageBox.Show("Oops!", "Something went wrong");
}
我做错了什么吗? 此函数的结果是"Med Added",但无论我执行查询多少次或使用 Ctrl+R 刷新结果,"药物"表似乎都没有任何新行
我错过了什么吗? 我尝试从返回的值中删除 ToString
方法,但这不是问题所在。我相信。ManuDB是制造商投递箱。
尝试替换SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(@Medication,@Dose,@manufacture)", mcs);
白色询问点(?)中的@variable,如下所示:
SqlCommand AddMed = new SqlCommand("INSERT INTO Medications VALUES(?,?,?)", mcs);
AddMed.Parameters.Add("@Medication", SqlDbType.NVarChar).Value = MedName.Text.ToString();
AddMed.Parameters.Add("@Dose", SqlDbType.Int).Value = dose;
AddMed.Parameters.Add("@manufacture", SqlDbType.NVarChar).Value = ManuDB.Text.ToString();
如果您有更多列,则为 3。另一列。那么我认为插入部分应该是:
INSERT INTO Medications(Medication,Dose,manufacture)
VALUES(@Medication,@Dose,@manufacture)
首先:您不应该在try
块中关闭连接,而应该在finally
中关闭连接。这可确保在发生错误时连接也会关闭。
第二:您的参数可能存在错误。尝试改用AddWithValue
并尝试使用这些类型。您的Medication
表是否具有递增的主键identity
或者您是否必须手动分配 ID?显示字段的数据类型。
编辑:无论如何,奇怪到你没有收到错误。您是否调试过以查看ExecuteNonQuery
返回的内容(应该是 1)?一个"愚蠢"的问题:你使用的是正确的数据库吗?也许SQL-Server Express在bin/debug文件夹中创建了一个副本。单击您的 MDF 文件并检查属性并确保将复制到输出目录设置为 Do Not Copy
。