数据未插入本地数据库
问题描述:
我最近开始在.NET(C#)中学习一些数据库的东西,我在将对象列表插入本地数据库时遇到了问题。我不知道原因,但是在执行查询之后,base仍然是空的,并且没有错误或警告,您能告诉我代码是否有问题,或者是否有其他原因导致它无法正常工作。数据未插入本地数据库
我试过调试,但代码似乎工作,它通过如果语句,并添加参数的值,我也删除了线程启动方法,并做了同步,但仍然没有。
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();
}
答
在某些时候你必须去实际执行SQL命令,您目前没有做的事:
cmd.ExecuteNonQuery();
如果你正在寻找插入一个记录,这将接近尾声。虽然看起来你试图在一个循环中插入多个记录,所以这当然会发生在循环内部。 (每条记录一次)
答
您必须执行SqlCommand。之前将这个 “NextIndex =计数;”:
cmd.ExecuteNonQuery();
答
你忘了在使用块运行:
cmd.ExecuteNonQuery();
答
您可以修剪下来
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;
谢谢你和其他人快速回应,我忘了在重建此方法后添加此行,这样简单的错误,但我看不到它。非常感谢。 – pablocity