数据未写入本地SQL Server数据库文件

时间:2014-12-26 21:57:14

标签: c# sql sql-server database local

我写过从传感器获取数据,我正在尝试将此数据写入本地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
        }
    }

1 个答案:

答案 0 :(得分:5)

您正在异步调用ExecuteNonQueryAsync 插入记录 - 但是您立即关闭了连接,而插入几乎肯定还没有完成。< / p>

您应该使用同步调用,或者正确使用异步 - 可能使方法异步,并等待ExecuteNonQueryAsync的结果。在关闭连接之前,您需要等待操作完成,基本上。

顺便说一下,你根本不需要明确地调用Close - 你已经有了using语句,因此连接将在执行退出时被处理掉块。 (顺便说一下,为什么你在using语句中有一个额外的块也不清楚。)