C# 项目运行时没有错误,但不会在数据库中添加任何内容
本文关键字:数据库 添加 任何内 运行时 项目 有错误 | 更新日期: 2023-09-27 18:34:34
我正在尝试将记录添加到我的 C# 项目中,它运行没有错误,但它不会在数据库中添加任何内容:
private void saveBtn_Click(object sender, EventArgs e)
{
if (admNo.Text != "" & session.Text != "" & name.Text != "")
{
SqlConnection cn = new SqlConnection("Data Source=C:''Users''Divya Pathak''Documents''Visual Studio 2012''Projects''SchoolRecord''SchoolRecord''Database1.sdf");
SqlCommand cmd = new SqlCommand();
cn.Open();
cmd.CommandText = "insert into addNew (no,session,name) values ('" + admNo.Text + "', '" + session.Text + "', '" + name.Text + "')";
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Record inserted successfully", "mission successfull");
}
}
有人可以告诉为什么吗?
您需要将cm.Connection
设置为cn
cm.Connection =cn;
或
using (var cn = new SqlCeConnection("connection string"))
using (var cmd = new SqlCeCommand("insert addNew (no,session,name) values (@no,@session,@name)", cn))
{
cmd.Parameters.AddWithValue("@no", admNo.Text);
cmd.Parameters.AddWithValue("@session", session.Text);
cmd.Parameters.AddWithValue("@name", name.Text);
cn.Open();
cmd.ExecuteNonQuery();
}
这将帮助您为 SQL CE 编写正确的连接字符串
你有四个错误:
-
从不将连接与命令关联
-
您正在使用完整的 Sql Server 提供程序连接到 Sql Server Compact 数据库(您应该使用 SqlCe 命名空间:
-
你正在使用不安全的字符串串联而不是查询参数来构建查询。修复此问题!
- 如果引发异常,则不会关闭连接,这最终可能会将您锁定在数据库之外。您需要关闭连接作为
finally
块的一部分,最简单的方法是使用using
块。
.
using (var cn = new SqlCeConnection("connection string here"))
using (var cmd = new SqlCeCommand("insert into addNew (no,session,name) values (@no,@session,@name)", cn))
{
//guessing at column lengths:
cmd.Parameters.Add("@no", SqlDbType.Int).Value = int.Parse(admNo.Text);
cmd.Parameters.Add("@session", SqlDbType.NVarChar, 100).Value = session.Text;
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 60).Value = name.Text;
cn.Open();
cmd.ExecuteNonQuery();
}