我遇到了SQL问题。我是C#的新手,所以我真的不知道该怎么做。
以下是代码:
public static void addMemo()
{
schedule sch = (schedule)Application.OpenForms["schedule"];
using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\_data\schedData.mdf;Integrated Security=True"))
{
SqlCommand CmdSql = new SqlCommand("INSERT INTO schTable (evnName, evnDate, evnTime, evnStatus) VALUES (@evnName, @evnDate, @evnTime, @evnStatus)", conn);
conn.Open();
CmdSql.Parameters.AddWithValue("@evnName", sch.txtName.Text);
CmdSql.Parameters.AddWithValue("@evnDate", sch.txtDate.Text);
CmdSql.Parameters.AddWithValue("@evnTime", sch.txtTime.Text);
CmdSql.Parameters.AddWithValue("@evnStatus", "Upcoming");
CmdSql.ExecuteNonQuery();
sch.lblNotifier.Text = sch.txtName.Text + " Added.";
conn.Close();
}
}
一切正常,没有错误。但是当我看着桌子时,什么都没有。我看不到我的意见。有人能帮助我吗?
编辑 - 这里我有一个我之前在VB.Net中编写的工作代码我试图使用它而不是我坚持使用Tables部分。 (我是c#的菜鸟)
Private ConStr As New String("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\data_\database.mdf;Integrated Security=True")
Dim MyNewRow As DataRow = SqlDatTbl.NewRow()
SqlDatTbl.Rows.Add(MyNewRow)
SqlRowPos = SqlDatTbl.Rows.Count - 1
SqlCon.ConnectionString = ConStr
SqlCon.Open()
SqlDatAdp = New SqlDataAdapter("Select * from Events", SqlCon)
SqlCmbBld = New SqlCommandBuilder(SqlDatAdp)
SqlDatAdp.Fill(SqlDatTbl)
If SqlDatTbl.Rows.Count <> 0 Then
SqlDatTbl.Rows(SqlRowPos)("Name") = txtName.Text
SqlDatTbl.Rows(SqlRowPos)("Date") = txtDate.Text
SqlDatTbl.Rows(SqlRowPos)("Time") = txtTime.Text
SqlDatTbl.Rows(SqlRowPos)("Status") = "Upcoming"
SqlDatAdp.Update(SqlDatTbl)
MsgBox("New Event Added")
End If
SqlCon.Close()
答案 0 :(得分:0)
使用附加数据库并且在解决方案资源管理器中显示该数据库时,有一个属性,&#34;复制到输出目录&#34;默认设置为&#34;始终复制&#34;。因此,如果您要为ExecuteNonQuery分配一个变量,并且结果显示的值大于0,那么您需要设置&#34;复制到输出目录&#34;到&#34;不要复制&#34;然后手动将数据库复制到Bin \ Debug或Bin \ Release文件夹或设置&#34;复制到输出目录&#34;到&#34;复制如果更新&#34;这意味着不像&#34;复制永远&#34;如果对项目文件夹中的数据库进行任何更改,则此值仅将数据库复制到app文件夹。我有一篇文章,包含样本和解释,供您试用MSDN Working with Copy to Output Directory。
如果ExecuteNonQuery返回0,则上述问题不是问题。
答案 1 :(得分:0)
您是否检查过以确保sch.txtName.Text
和sch.txtDate.Text
以及sch.txtTime.Text
确实包含值?在conn.Open();
上插入断点,然后如果您在代码中鼠标悬停在sch.txtName.Text
,sch.txtDate.Text
和sch.txtTime.Text
上,那么它应显示一个小工具提示,其中包含有关您的字段的信息正在徘徊。 Here's一张图像,显示了一些随机代码对我来说的样子。弹出窗口左侧有一个箭头,如果将鼠标悬停在左侧则会打开。这将为您提供有关您正在查看的变量的更多信息。如果文本值为空,则无需写入数据库。根据数据库的配置方式,这可能意味着它根本不写任何内容或者写入空字段。
由于您说您是新手,如果您不知道如何添加断点,可以通过右键单击要放置断点的行,然后在断点子菜单下添加一个断点来添加断点。 ,单击“插入断点”。现在当你在调试模式下运行代码并且它到达那一点时,它将停止并让你看看发生了什么。