C# 连接到本地数据库
我试图通过mdf文件创建本地数据库,如下所示:C# 连接到本地数据库,c#,C#,我试图通过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.Parame
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,以下是我的文件结构:
我的数据库存在:
如何修复此问题以便连接到数据库?将连接对象传递给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();
}
将连接对象传递给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();
}
您的代码的问题是您有一个命令和一个连接,但是在命令使用这个连接对象之前没有任何东西可以使用。。。您可以使用SqlCommand构造函数来实现这一点
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)",scon)
或者像这样使用SqlCommand类的Connection属性
scmd.Connection = scon
考虑使用将添加到SQL连接中。。。否则,您必须通过调用scon.Close()手动关闭连接代码>
如果您没有执行上述任一操作,则如果您在连接已打开时再次尝试打开连接,您将遇到异常。代码的问题是您有一个命令和一个连接,但在使用此连接对象的命令之前,没有任何操作。。。您可以使用SqlCommand构造函数来实现这一点
scmd = new SqlCommand("Insert INTO articles(url) VALUES(@url)",scon)
或者像这样使用SqlCommand类的Connection属性
scmd.Connection = scon
考虑使用
将添加到SQL连接中。。。否则,您必须通过调用scon.Close()手动关闭连接代码>
如果未执行上述任一操作,则在连接已打开时再次尝试打开连接时将遇到异常是否尝试通过删除空格和其他非字母数字字符重命名文件夹?是否尝试通过删除空格和其他非字母数字字符重命名文件夹字符?SqlCommand
实际上不需要处理。它可配置的唯一原因是它继承自System.ComponentModel.Component
。无论是SqlCommand
还是DbCommand
都不会在处理过程中执行任何操作。处理命令时发生的唯一事情是。是的,这是真的。但是如果一个对象实现了IDisposable接口,那么如果我尊重建议的模式,我会做错什么呢?我更愿意忽略这些,因为您要处理您创建的每个DataTable
,并处理从异步方法返回的每个Task
或Task
?我处理不再需要的对象SqlCommand
。它可配置的唯一原因是它继承自System.ComponentModel.Component
。无论是SqlCommand
还是DbCommand
都不会在处理过程中执行任何操作。处理命令时发生的唯一事情是。是的,这是真的。但是如果一个对象实现了IDisposable接口,那么如果我尊重建议的模式,我会做错什么呢?我更愿意忽略这些,因为您要处理您创建的每个DataTable
,并处理从异步方法返回的每个Task
或Task
?我要处理不再需要的对象