我正在尝试通过mdf文件创建一个本地数据库,如下所示:
scon = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirectory|\articles.mdf; Integrated Security=True");
scon.Open();
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)");
scmd.Parameters.AddWithValue("@url", "http://google.com");
scmd.ExecuteNonQuery();
我的mdf文件位于根文件夹中,也位于调试文件夹中。当我运行以下代码时,出现以下错误:
我无法使用完整的连接路径,因为它是一个带空格的长网址,这是我的文件结构:
我的数据库存在:
如何解决此问题,以便连接到我的数据库?
答案 0 :(得分:3)
将连接对象传递给SqlCommand构造函数
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)", scon);
connectionstring很好,如果数据库未知,错误消息会通知您无法执行命令。 SqlConnection包含此信息,您需要将其传递给您的命令。
是另一种可能性scmd.Connection = scon;
但是,就个人而言,我更喜欢在构造函数中传递该信息。
最后但非常重要的说明:
SqlConnection和SqlCommand是一次性对象。你应该总是处置这些对象。 using语句是正确的方法
using(scon = new SqlConnection(....))
using(scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)",scon))
{
scon.Open();
scmd.Parameters.AddWithValue("@url", "http://google.com");
scmd.ExecuteNonQuery();
}
答案 1 :(得分:0)
你的代码的问题是你有一个命令和一个连接但没有什么可以让命令使用这个连接对象...你可以使用SqlCommand构造器来做到这一点
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)",scon)
或者像这样使用SqlCommand类的连接属性
scmd.Connection = scon
考虑将Using
添加到SQL连接......或者您必须通过调用scon.Close();
手动关闭连接
如果你没有做任何一个你将遇到异常的例子如果你已经尝试再次打开连接