我在这里找到了大部分代码How to set SQL Server connection string?的这篇文章。
这是我的所作所为:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=(localdb)\\Instance;" +
"Initial Catalog=Database;" +
"User id=root;Password=pass;";
try
{
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
SqlCommand myCommand = new SqlCommand("INSERT INTO Database.dbo.Table" +
"VALUES ('stg', 'stg1', 'stg2', 'stg3');", conn);
try
{
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
很多以前的代码都给了我错误。有一次,我收到一个错误,我无法连接到该实例。这是' \#39;的一个问题。它认为这是一个逃避角色,所以我做了双重的“#”;为了摆脱这种情况,所以我不再得到那个错误了,所以这不应该是问题所在。
我收到错误的用户名和密码错误。我使用的是SQL Server身份验证,我之前使用的代码是指定Windows身份验证。我再也没有收到这个错误了。
截至目前,代码一直执行且没有错误。当我检查数据库时(我使用SQL Server Management Studio),没有任何内容插入到表中。我直接运行了Insert语句并且工作正常,所以我不确定这里的问题是什么。另外,我使用的是VS 2013.
答案 0 :(得分:2)
您根本没有使用SqlCommand.ExecuteNonQuery
来使用insert-command。因此没有插入任何东西
SqlCommand myCommand = new SqlCommand("INSERT INTO Database.dbo.Table" +
"VALUES ('stg', 'stg1', 'stg2', 'stg3');", conn);
int inserted = myCommand.ExecuteNonQuery();
您还应该使用using
- 语句来确保处理所有非托管资源,即使出现错误,连接也会关闭。然后,您无需明确使用conn.Close
。
答案 1 :(得分:1)
您没有执行查询。在创建命令对象后添加:
myCommand.ExecuteNonQuery();
附注:您应该在所有代码周围使用try...catch
,并使用using
块作为连接和命令。无论发生什么事情,这都将确保对象被关闭和妥善处理:
try {
using (SqlConnection conn = new SqlConnection()) {
conn.ConnectionString =
"Data Source=(localdb)\\Instance;" +
"Initial Catalog=Database;" +
"User id=root;" +
"Password=pass;";
conn.Open();
using (SqlCommand myCommand = new SqlCommand("INSERT INTO Database.dbo.Table" +
"VALUES ('stg', 'stg1', 'stg2', 'stg3');", conn)) {
myCommand.ExecuteNonQuery();
}
}
} catch (Exception ex) {
Console.WriteLine(ex.ToString());
}