У меня проблема с простым запросом на вставку из моего приложения С# в базу данных Postrges.
Это функция, которая строит запрос:
string push = "INSERT INTO \"Tasks\"( \"TName\", \"Desc\", \"TType\", \"DCreated\", \"DEnd\") VALUES (\'" + this.Name + "\',\'" + this.Descr + "\'," + this.Type + ",\'" + this.StartDate + "\', \'" + this.EndDate + "\');";
GenericDbClass.ExecutePush(push);
И это строка, которая передается в БД:
INSERT INTO "Tasks"( "TName", "Desc", "TType", "DCreated", "DEnd") VALUES ('dddddd','dddddddddddd',3,'13.04.2015 17:00', '24.04.2015 16:42');
Если я скопирую строку и запустил ее внутри pgAdmin, она будет работать прямо на летучей мыши, но отсюда она ничего не делает - никаких исключений, ошибок, ничто в журналах, как если бы она просто не дошла до сервера.
Кроме того, это метод push:
public static void ExecutePush(string sql)
{
try
{
NpgsqlConnection conn = new NpgsqlConnection(GenericDbClass.GetDbConnString());
conn.Open();
NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
conn.Close();
}
catch (Exception msg)
{
MessageBox.Show(msg.ToString());
throw;
}
}
Изменение: Это рабочее решение, которое я нашел
public static void ExecutePush(string sql)
{
try
{
NpgsqlConnection conn = new NpgsqlConnection(GenericDbClass.GetDbConnString());
conn.Open();
NpgsqlCommand nc = new NpgsqlCommand(sql, conn);
nc.ExecuteNonQuery();
conn.Close();
}
catch (Exception msg)
{
MessageBox.Show(msg.ToString());
throw;
}
}
NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
Средства "Пожалуйста, создайте адаптер данных, который использует INSERT
SQL, переданный как sql
для выбора". Это не имеет большого смысла, и тогда вы ничего не делаете с этим.
conn.CreateCommand(sql).ExecuteNonQuery();
Это похоже на то, что вы хотите.