Почему не работает SQL запрос в c#?
При попытке вставить что-то в таблицу и удалить через SqlCommand ничего не происходит, код:
namespace sql_requests
{
internal class Program
{
private static string connection_path
= "Data Source=localhost;Initial Catalog=Test;Integrated Security=True;Encrypt=False;";
private static SqlConnection connect;
async static Task Main(string[] args)
{
connect = new SqlConnection(connection_path);
SqlDataReader reader = null;
SqlCommand cmd = null;
try
{
await connect.OpenAsync();
string[] commands = {"select * from test",
"delete from test where name = 'Ivan'",
"insert into test (name) values ('Ivan')"};
cmd = new SqlCommand(commands[2], connect);
//cmd = new SqlCommand(commands[1], connect);
cmd = new SqlCommand(commands[0], connect);
reader = await cmd.ExecuteReaderAsync();
if (reader.HasRows)
{
string columnName1 = reader.GetName(0);
string columnName2 = reader.GetName(1);
Console.WriteLine($"{columnName1}\t{columnName2}");
while (await reader.ReadAsync())
{
object id = reader.GetValue(0);
object name = reader.GetValue(1);
Console.WriteLine($"{id} \t{name}");
}
}
await reader.CloseAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (connect.State == ConnectionState.Open)
await connect.CloseAsync();
}
}
}
}
На консоль выводится единственная запись сделаная через сам ms sql server
Ответы (1 шт):
Автор решения: B0lver
→ Ссылка
В этом фрагменте кода SQL-команда выполняется только один раз.
cmd = new SqlCommand(commands[2], connect);
//cmd = new SqlCommand(commands[1], connect);
cmd = new SqlCommand(commands[0], connect);
Вы присвоили переменной cmd сначала одну строку из массива, а затем сразу же другую. Затем выполнили команду, которая в виде строки хранится в cmd.
reader = await cmd.ExecuteReaderAsync();
Так, можно выполнять команды INSERT, UPDATE и DELETE с помощью метода ExecuteNonQuery(). Например, так:
cmd = new SqlCommand(commands[2], connect);
cmd.ExecuteNonQuery();
//cmd = new SqlCommand(commands[1], connect);
cmd = new SqlCommand(commands[0], connect);
reader = await cmd.ExecuteReaderAsync();
