我正在玩POC,我创建了以下电话。
public string DoStuff()
{
try
{
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
SqlConnection connection = new SqlConnection("Server...");
string command = "insert into Records values (...)";
adapter.InsertCommand = new SqlCommand(command, connection);
}
}
catch (Exception exception)
{
return exception.Message + " " + exception.InnerException;
}
return "WeeHee!";
}
我看到的文字是幸福的,所以我总结说没有例外。因此,我得出结论,对DB的调用是按照应该执行的。但是,正在创建的数据库中没有新行。
我在配置文件中使用了相同的连接字符串,并且在SQL Manager中使用了粘贴的命令。
所以我怀疑是虽然我创建了一个插入命令,但我从来没有真正执行它,但根据MSDN它应该是如何工作的。
我在这里想念的是什么蠢事?
答案 0 :(得分:2)
您应该使用ExecuteNonQuery
代替。使用SqlDataAdapter
进行INSERT
查询没有意义。
在执行之前,您应该Open
您的连接 。
答案 1 :(得分:2)
您遗失了connection.Open();
和adapter.InsertCommand.ExecuteNonQuery();
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
SqlConnection connection = new SqlConnection("Server...");
connection.Open();
string command = "insert into Records values (...)";
adapter.InsertCommand = new SqlCommand(command, connection);
adapter.InsertCommand.ExecuteNonQuery();
}
答案 2 :(得分:1)
您链接的示例返回SQLAdapter
以供日后使用。
根本不需要一个:
using (SqlConnection connection = new SqlConnection("Server..."))
{
string command = "insert into Records values (...)";
connection.Open();
var command = new SqlCommand(command, connection);
command.ExecuteNonQuery();
}
请注意,还有其他执行方法,具体取决于预期的返回值以及是否需要异步操作:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx
答案 3 :(得分:1)
你可以:
using(SqlConnection connection = new SqlConnection("Server..."))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = "insert into Records values (...)";
connection.Open();
int craeted = command.ExecuteNonQuery();
}