连接到C#中的SQL Server数据库的问题
我发现这篇文章的大部分代码在这里How to set SQL Server connection string?。连接到C#中的SQL Server数据库的问题
这里就是我有,但:
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());
}
很多以前的代码是给我的错误。有一次,我遇到了一个我无法连接到实例的错误。这是'\'的问题。它认识到它是一种逃避角色,所以我做了双倍'\'来摆脱这种情况,所以我不再有这个错误,所以不应该是问题。
我得到了关于错误的用户名和密码的错误。我正在使用SQL Server身份验证,我以前使用的代码是指定Windows身份验证。我再也没有那个错误了。
截至目前,代码一路执行,没有错误。当我检查数据库时(我正在使用SQL Server Management Studio),没有任何东西被插入到表中。我已经直接运行了Insert语句并且工作正常,所以我不确定问题在这里。此外,我正在使用VS 2013.
您没有执行查询。创建命令对象后补充一点:
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());
}
写'catch(Exception)'是一个坏习惯,你不应该启动新的程序员。至少,捕获你期望的特定异常(在这种情况下,'SqlException')。更好的是,如果你的程序没有处理异常的策略,不要让它崩溃。 – 2014-10-20 08:16:15
@JeroenMostert:这是一个很好的观点,我正在考虑提及这一点,但保持它接近原始代码。无论如何,将错误消息写入控制台似乎是处理错误的临时措施。 – Guffa 2014-10-20 09:13:01
您没有使用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
。
不想过于苛刻,但是在开始这种编程之前,您是否阅读过任何ADO.NET教程?你手中有一个非常强大的工具,你应该试着了解它的工作原理,否则这些问题将会是一个反复出现的情况。 – Steve 2014-10-19 21:31:05