Я использую NpgSQL с PostgreSQL и ADO.NET. Простите простоту вопроса, поскольку я только начал использовать PostgreSQL и NpgSQL на этой неделе.PostgreSQL Параметрированная вставка с ADO.NET
Что-то вроде этого работает отлично:
[Test]
public void InsertNoParameters()
{
NpgsqlConnection conn = new NpgsqlConnection("Host=localhost; Database=postgres; User ID=postgres; Password=password");
conn.Open();
IDbCommand command = conn.CreateCommand();
string sql = "INSERT INTO Customers (FirstName,LastName) VALUES ('Test','Tube')";
command.CommandText = sql;
command.ExecuteNonQuery();
conn.Close();
}
Когда я кладу в параметрах я получаю сообщение об ошибке: Npgsql.NpgsqlException: ОШИБКА: 42703: колонка "_firstname" не существует
[Test]
public void InsertWithParameters()
{
NpgsqlConnection conn = new NpgsqlConnection("Host=localhost; Database=postgres; User ID=postgres; Password=password");
conn.Open();
IDbCommand command = conn.CreateCommand();
string sql = "INSERT INTO Customers (FirstName,LastName) VALUES (_FirstName,_LastName)";
command.CommandText = sql;
var parameter = command.CreateParameter();
parameter.ParameterName = "_FirstName";
parameter.Value = "Test";
command.Parameters.Add(parameter);
parameter = command.CreateParameter();
parameter.ParameterName = "_LastName";
parameter.Value = "Tube";
command.Parameters.Add(parameter);
command.ExecuteNonQuery();
conn.Close();
}
Прописные <> в нижнем регистре. Либо используйте только строчные буквы, либо укажите свои идентификаторы (используя двойные кавычки). – wildplasser
Я просто пробовал все имена параметров нижнего регистра, и я все равно получаю ту же ошибку. –
в psql (или pgadmin) проверьте, каковы фактические имена ваших столбцов. – wildplasser