表中没有记录 - SQL C#

时间:2016-01-29 13:30:19

标签: c# sql-server

我遇到了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()

2 个答案:

答案 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

这是默认设置 enter image description here

如果ExecuteNonQuery返回0,则上述问题不是问题。

答案 1 :(得分:0)

您是否检查过以确保sch.txtName.Textsch.txtDate.Text以及sch.txtTime.Text确实包含值?在conn.Open();上插入断点,然后如果您在代码中鼠标悬停在sch.txtName.Textsch.txtDate.Textsch.txtTime.Text上,那么它应显示一个小工具提示,其中包含有关您的字段的信息正在徘徊。 Here's一张图像,显示了一些随机代码对我来说的样子。弹出窗口左侧有一个箭头,如果将鼠标悬停在左侧则会打开。这将为您提供有关您正在查看的变量的更多信息。如果文本值为空,则无需写入数据库。根据数据库的配置方式,这可能意味着它根本不写任何内容或者写入空字段。

由于您说您是新手,如果您不知道如何添加断点,可以通过右键单击要放置断点的行,然后在断点子菜单下添加一个断点来添加断点。 ,单击“插入断点”。现在当你在调试模式下运行代码并且它到达那一点时,它将停止并让你看看发生了什么。