私は数日前にこれを見てきましたが、私はたくさんのテストをしましたが、まだ動作させることはできません。私はNpgsql 2.0.11.91(2.0.11も試しました)とPostgreSQL 9.04を使用しています。Npgsqlの構文エラー ":"
Npgsqlのユーザーマニュアルの例を使用してください。これはhereです。この例を参照するには、「.NETデータセットの操作」を検索してください。それは私にとってはうまく動作しますが、私のニーズに合わせて修正しようとしています。
私のコードは以下の通りです。私が何を試しても何らかのエラーが発生します。正確にはかなりあり、それ以下のコードを使用してマニュアルに何があるか、私はNpgsqlExceptionを取得することはユーザーコードによって任意のアイデア
ERROR: 42601: syntax error at or near ":".
private void tryThis()
{
// This method expects the following table in the backend:
//
// create table customers(code varchar, reference varchar, description varchar, street varchar, suburb varchar, postcode varchar);
//
//
NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=password;Database=testdatabase;");
conn.Open();
DataSet ds = new DataSet();
NpgsqlDataAdapter da = new NpgsqlDataAdapter("select * from customers", conn);
da.InsertCommand = new NpgsqlCommand("insert into customers(code, reference, description, street, suburb, postcode) " +
" values (:a, :b, :c, :d, :e, :f)", conn);
da.InsertCommand.Parameters.Add(new NpgsqlParameter("a", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("b", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("c", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("e", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters.Add(new NpgsqlParameter("f", NpgsqlDbType.Varchar));
da.InsertCommand.Parameters[0].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[1].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[2].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[3].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[4].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[5].Direction = ParameterDirection.Input;
da.InsertCommand.Parameters[0].SourceColumn = "code";
da.InsertCommand.Parameters[1].SourceColumn = "reference";
da.InsertCommand.Parameters[2].SourceColumn = "description";
da.InsertCommand.Parameters[3].SourceColumn = "street";
da.InsertCommand.Parameters[4].SourceColumn = "suburb";
da.InsertCommand.Parameters[5].SourceColumn = "postcode";
da.Fill(ds);
DataTable dt = ds.Tables[0];
DataRow dr = dt.NewRow();
dr["code"] = "CUST1";
dr["reference"] = "C";
dr["description"] = "Customer 1";
dr["street"] = "1 Big Street";
dr["suburb"] = "BRISBANE QLD";
dr["postcode"] = "4000";
dt.Rows.Add(dr);
DataSet ds2 = ds.GetChanges();
da.Update(ds2);
ds.Merge(ds2);
ds.AcceptChanges();
}
未処理でしたか?
Pete。 (上記のコードから)のparam d
全く...
EDITを追加していない間
ストレートADO.NETクラスを使用して、通常は全体のパラメータ名(つまり、あなたが入れた場合は、 '@ id'を指定し、例えばあなたは.NETスタイルのAddWithValueを使用することができ、最新バージョンで判明しますクエリでは、パラメータ名は '' id ''ではなく' '@id" 'でなければなりません)。パラメータ名にコロンを追加してみてください。 –