如何将记录插入到 sql server express 数据库表中?
Posted
技术标签:
【中文标题】如何将记录插入到 sql server express 数据库表中?【英文标题】:How to insert record into a sql server express database table? 【发布时间】:2012-02-20 14:51:10 【问题描述】:我正在尝试将文本框值插入到名为 site_list
的数据库表中。
site_list
表包含两列 id
和 site_name
,id
设置为自动递增
这是我正在尝试的代码,执行时没有错误,但数据未显示在表格中
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|scraper_db.mdf;";
SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name) "
+ " VALUES (@site_name)", conn);
addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;
conn.Open();
addSite.ExecuteNonQuery();
conn.Close();
任何帮助将不胜感激。
问候
编辑:
这段代码开始工作了
string connstring = "Data Source=.\\SQLExpress;"+
"Integrated Security=true;"+
"User Instance=true;"+
"AttachDBFilename=|DataDirectory|scraper_db.mdf;"+
"Initial Catalog=scraper_db";
using (SqlConnection connection = new SqlConnection(connstring))
connection.Open();
SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name)"+
"VALUES (@site_name)", connection);
addSite.Parameters.AddWithValue("@site_name", textBox1.Text);
addSite.ExecuteNonQuery();
connection.Close();
【问题讨论】:
您使用的是User Instance / AttachDbFilename=
方法——我个人觉得这种方法有时非常混乱和混乱。您是否尝试过运行您的代码,在conn.Close()
上放置一个断点,当您的代码停在那里时,去检查您的数据目录中的数据库文件,例如SQL Server Mgmt Studio Express??用户实例的东西倾向于在 MDF 文件周围复制,因此您的插入可能发生得很好 - 但是当您查看它时,您正在查看的是旧版本的数据库(没有您的插入)
感谢您的信息,使用 sql server express 执行插入更新删除操作的最佳方法是什么?
将您的代码包装在 Try Catch 中以供初学者使用。同时将 addSite.Parameter(.....) 更改为 addSite.Parameters.AddWIthValue("@site_name", textBox1.Text); Parameters.Add 已被弃用..
我总是会在服务器上创建数据库(例如 SQL Server Management Studio Express),然后使用它的逻辑数据库名称连接到它(不要摆弄物理数据库文件 - .mdf 和 .ldf - 将其留给服务器.....)
【参考方案1】:
按照人们的建议,尝试在服务器上创建数据库(使用Sql Management Studio 会更容易处理)。 完成后,请尝试以下操作(刚刚测试过并且有效):
using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)"))
SqlCommand addSite = new SqlCommand(@"INSERT INTO site_list (site_name) VALUES (@site_name)", conn);
addSite.Parameters.AddWithValue("@site_name", "mywebsitename");
addSite.Connection.Open();
addSite.ExecuteNonQuery();
addSite.Connection.Close();
【讨论】:
【参考方案2】:try
using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)\SQLEXPRESS;database=Inventory;Data Source=localhost\SQLEXPRESS;"))
SqlCommand addSite = new SqlCommand(@"INSERT INTO Creation (Name,Product,Quantity,Category) VALUES (@Name,@Product,@Quantity,@Category)", conn);
addSite.Parameters.AddWithValue("@Name", textBox1.Text);
addSite.Parameters.AddWithValue("@Product", textBox2.Text);
addSite.Parameters.AddWithValue("@Quantity", textBox3.Text.ToString());
addSite.Parameters.AddWithValue("@Category", textBox4.Text);
thisConnection.Open();
addSite.ExecuteNonQuery();
catch
thisConnection.Close();
【讨论】:
【参考方案3】:试试这个:
string sql = String.Format("INSERT INTO site_list (site_name) VALUES('0')", myTextBox.Text);
using(SqlConnection connection = new SqlConnection(myConnectionString))
connection.open();
using(SqlCommand cmd = new SqlCommand(sql, connection))
cmd.ExecuteNonQuery();
祝你好运
【讨论】:
【参考方案4】:尝试将您的文本框值存储在变量中。如:
@stringname = textbox1.text
addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = @stringname;
(重要提示!@stringname 中的 @ 不是必需的,但可以保护您免受黑客攻击!)
这段代码为我创造了奇迹。
【讨论】:
【参考方案5】:我很抱歉。我之前给出的答案将不起作用,因为插入命令中使用的变量名(在您的情况下为@site_name)必须与您的 sqlcommand 中使用的变量匹配。如:
@site_name = textbox1.text
addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;
很抱歉我可能造成的混乱。
【讨论】:
以上是关于如何将记录插入到 sql server express 数据库表中?的主要内容,如果未能解决你的问题,请参考以下文章
通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]