我试图通过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文件在根文件夹中,也在调试文件夹中。当我运行以下代码时,会看到一个错误,说明如下:

我不能使用完整的连接路径,因为它是一个带有空格的长url,下面是我的文件结构:

我的数据库存在:

我如何修复这个问题以便连接到我的数据库?
发布于 2017-04-24 21:24:21
将连接对象传递给SqlCommand构造函数
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)", scon);连接字符串很好,错误消息通知您,如果不知道数据库,就不可能执行命令。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();
}发布于 2017-04-24 22:49:43
您的代码的问题是您有一个命令和一个连接,但是在命令使用此连接对象之前没有任何东西可以使用.您可以使用SqlCommand构造函数来执行此操作。
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)",scon)或者使用SqlCommand类的Connection属性,如下所示
scmd.Connection = scon 考虑将Using添加到您的SQL连接中.否则,您将不得不通过调用scon.Close();手动关闭连接,如果您没有执行这两种操作,那么如果您试图在连接已经打开时再次打开连接,您将遇到异常。
https://stackoverflow.com/questions/43597846
复制相似问题