这是我的代码
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);
}
}
这是我的设计
I am only trying to save 'email' here.
这是我的sql表,问题是我甚至无法将单个字段保存到表中。
数据库设计
现在错误就是这个
答案 0 :(得分:1)
要检查的一些事项:
您的活动是否收到错误?如果是,那么错误是什么?请注意,您正在将错误消息写入控制台窗口,但您的应用程序是Windows应用程序。您的应用程序是否有控制台窗口?如果不是,请检查Visual Studio中的“输出”窗口。或者更简单,使用MessageBox.Show
来显示错误。
如果程序运行没有任何错误,请检查command.ExecuteNonQuery()
的返回值。它会告诉您受影响的记录数量。如果它多于零,则该值实际存储在数据库中。
确保您在程序中看到要插入的数据库文件的内容!您可能已从项目目录中打开Database_POS.sdf
,但程序会将数据插入“bin \ Debug”目录中的另一个Database_POS.sdf
。
- 更多帮助 -
将您的方法更改为:
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):