问题
I am having problem updating my data through datagridview using Npgsql. I want update my table dynamically from datagridview.
Here is my code to update :
NpAdapter.UpdateCommand = new NpgsqlCommand("update sessions set \"Visit Number:\" = :visit_num, \"ID:\" = :id, \"ENTERED BY:\" = :entered " +
"where \"Visit Number:\" = :visit_num_old, \"ID:\" = :id_old, \"ENTERED BY:\" = :entered_old", this.dataconnect);
NpAdapter.UpdateCommand.Parameters.Add(new NpgsqlParameter("visit_num", DbType.Int32, 10) { Direction = ParameterDirection.Input, SourceColumn = "Visit Number:" });
NpAdapter.UpdateCommand.Parameters.Add(new NpgsqlParameter("id", DbType.AnsiStringFixedLength, 50) { Direction = ParameterDirection.Input, SourceColumn = "ID:" });
NpAdapter.UpdateCommand.Parameters.Add(new NpgsqlParameter("entered", DbType.AnsiStringFixedLength, 50) { Direction = ParameterDirection.Input, SourceColumn = "ENTERED BY:" });
NpAdapter.Update(dset, "sessions");
I dont know what I am doing wrong. Could anyone please help me out. I trying to figure out this for a very long time.
回答1:
Here is the solution I found.
NpgsqlCommand command = new NpgsqlCommand("UPDATE sessions SET \"Visit Number:\" = @visitnum,\"ENTERED BY:\" = @enteredby WHERE \"Visit Number:\" = @visitnum", this.connection);
command.Parameters.Add("@visitnum", NpgsqlTypes.NpgsqlDbType.Integer, 12, "Visit Number:");
command.Parameters.Add("@enteredby", NpgsqlTypes.NpgsqlDbType.Varchar, 50, "ENTERED BY:");
NpgsqlParameter parameter = command.Parameters.Add("@oldvisitnum", NpgsqlTypes.NpgsqlDbType.Integer, 12, "Visit Number:");
parameter.SourceVersion = DataRowVersion.Original;
NpAdapter.UpdateCommand = command;
NpAdapter.Update(dset,"sessions");
MessageBox.Show("Data Updated!!!");
来源:https://stackoverflow.com/questions/22926961/update-doesnt-work-from-datagridview-using-npgsql