数据未插入本地数据库

时间:2017-04-26 17:10:05

标签: c# sql sql-server winforms

我最近开始在.NET(C#)中学习一些数据库的东西,我在将对象列表插入本地数据库时遇到了问题。我不知道原因,但是在执行查询后,base仍然是空的并且没有错误或警告,你能告诉我代码是否有任何问题,或者是否有任何其他原因导致它没有工作正常。

我试图调试,但代码似乎有用,它传递if语句,并添加参数的值,我也删除了线程启动方法并同步完成但仍然没有。

enter image description here

public static void SaveData()
{
    new Thread(() =>
    {
        Thread.CurrentThread.IsBackground = true;

        using (SqlConnection conn = new SqlConnection(conString))
        {
            conn.Open();

            using (SqlCommand cmd = new SqlCommand("INSERT INTO Przestoje(Urzadzenie, Czas, Data) VALUES(@nazwa, @czas, @data)", conn))
            {
                cmd.Parameters.AddWithValue("@nazwa", SqlDbType.NVarChar);
                cmd.Parameters.AddWithValue("@czas", SqlDbType.Int);
                cmd.Parameters.AddWithValue("@data", SqlDbType.NVarChar);

                int count = allEncounters.Count;

                for (int i = 0; i < count; i++)
                {
                    if (i >= NextIndex)
                    {
                        cmd.Parameters["@nazwa"].Value = allEncounters[i].Name;
                        cmd.Parameters["@czas"].Value = allEncounters[i].timeOnTimeout * 10;
                        cmd.Parameters["@data"].Value = allEncounters[i].startDate.ToString();
                    }
                }

                NextIndex = count;
            }
        }
    }).Start();
}

4 个答案:

答案 0 :(得分:4)

在某些时候你必须实际执行SQL命令,你现在不会这样做:

cmd.ExecuteNonQuery();

如果您要插入一条记录,这将接近尾声。虽然看起来你试图在一个循环中插入多个记录,所以这当然会发生在循环内部。 (每条记录一次。)

答案 1 :(得分:1)

您必须执行SqlCommand。把它放在“NextIndex = count;”之前:

cmd.ExecuteNonQuery();

答案 2 :(得分:1)

你忘记了使用块:

cmd.ExecuteNonQuery();

答案 3 :(得分:1)

你可以减少

            for (int i = NextIndex; i < allEncounters.Count; i++)
            {
                    cmd.Parameters["@nazwa"].Value = allEncounters[i].Name;
                    cmd.Parameters["@czas"].Value = allEncounters[i].timeOnTimeout * 10;
                    cmd.Parameters["@data"].Value = allEncounters[i].startDate.ToString();
                    cmd.ExecuteNonQuery();
            }

            NextIndex = allEncounters.Count;
相关问题