我写过从传感器获取数据,我正在尝试将此数据写入本地SQL Server数据库文件。
代码不会产生任何错误,但数据没有写入数据表。
我使用了以下代码:(任何建议?)
static void Insert(string date, double value, string deviceName)
{
string path = Directory.GetCurrentDirectory();
string filename = path + "\\Database1.mdf";
Console.WriteLine(filename);
string connectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=" + filename + ";Database=Database1";
using (SqlConnection conn = new SqlConnection(connectionString))
try
{
{
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
using (SqlCommand cmd = new SqlCommand("INSERT INTO DataTable VALUES(@Id, @Date, @Value, @Device Name)", conn))
{
num11 += 1;
cmd.Parameters.AddWithValue("@Id", num11);
cmd.Parameters.AddWithValue("@Date", date);
cmd.Parameters.AddWithValue("@Value", value);
cmd.Parameters.AddWithValue("@Device Name", deviceName);
cmd.ExecuteNonQueryAsync();
//rows number of record got inserted
}
conn.Close();
}
}
catch (SqlException es)
{
Console.WriteLine(es);
//Display Error message
}
}
答案 0 :(得分:5)
您正在异步调用ExecuteNonQueryAsync
到 插入记录 - 但是您立即关闭了连接,而插入几乎肯定还没有完成。< / p>
您应该使用同步调用,或者正确使用异步 - 可能使方法异步,并等待ExecuteNonQueryAsync
的结果。在关闭连接之前,您需要等待操作完成,基本上。
顺便说一下,你根本不需要明确地调用Close
- 你已经有了using
语句,因此连接将在执行退出时被处理掉块。 (顺便说一下,为什么你在using
语句中有一个额外的块也不清楚。)