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

本文关键字:SQL Server 数据库 文件 数据 | 更新日期: 2023-09-27 18:35:19

我已经编写了从传感器获取数据的文章,我正在尝试将此数据写入本地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
        }
    }

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

您正在调用ExecuteNonQueryAsync异步插入记录 - 但随后您将立即关闭连接,而插入几乎肯定尚未完成。

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

顺便说一下,你根本不需要显式调用Close - 你已经有一个using语句,所以连接将在执行退出块时被释放。(顺便说一下,目前还不清楚为什么你在using语句中有一个额外的块。