无法保存数据c #Windows应用程序

时间:2013-11-21 05:51:57

标签: c# database windows

这是我的代码

 private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string connectionString = @"Data Source=|DataDirectory|\Database_POS.sdf";
            using (SqlConnection connection = new SqlConnection(connectionString))
            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText= "INSERT INTO Customer (Email) Values (@email);";
                command.Parameters.AddWithValue("@email",textBox_Email.Text);

                connection.Open();
                command.ExecuteNonQuery(); 
            }
        }

        catch (SqlException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }  

这是我的设计

enter image description here

    I am only trying to save 'email' here. 

这是我的sql表,问题是我甚至无法将单个字段保存到表中。

enter image description here

数据库设计 enter image description here

现在错误就是这个

enter image description here

2 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  1. 您的活动是否收到错误?如果是,那么错误是什么?请注意,您正在将错误消息写入控制台窗口,但您的应用程序是Windows应用程序。您的应用程序是否有控制台窗口?如果不是,请检查Visual Studio中的“输出”窗口。或者更简单,使用MessageBox.Show来显示错误。

  2. 如果程序运行没有任何错误,请检查command.ExecuteNonQuery()的返回值。它会告诉您受影响的记录数量。如果它多于零,则该值实际存储在数据库中。

  3. 确保您在程序中看到要插入的数据库文件的内容!您可能已从项目目录中打开Database_POS.sdf,但程序会将数据插入“bin \ Debug”目录中的另一个Database_POS.sdf

  4. - 更多帮助 -

    将您的方法更改为:

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string connectionString = @"Data Source=|DataDirectory|\Database_POS.sdf";
            using (SqlConnection connection = new SqlConnection(connectionString))
            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText= "INSERT INTO Customer (Email) Values (@email);";
                command.Parameters.AddWithValue("@email",textBox_Email.Text);
    
                connection.Open();
                var rowsAffected = command.ExecuteNonQuery();
                if(rowsAffected > 0)
                    MessageBox.Show("Data inserted successfully");
                else
                    MessageBox.Show("Nothing inserted into the database!");
            }
        }
    
        catch (SqlException ex)
        {
            Console.WriteLine(ex.Message);
            MessageBox.Show(ex.ToString()); // for debugging purpose
        }
    }
    

答案 1 :(得分:1)

感谢大家的回答

Cannot connect to local database in C#

我的链接上面有我的答案。

我正在使用Compact Database并尝试像SQLServer一样进行连接。

现在开始工作了。

这是答案文本,解决了我的问题

When using a .sdf file (SQL Server Compact Edition), you need to use SqlCeConnection and not SqlConnection (that works against a full SQL Server):