Tôi đang cố chạy đoạn mã sau trong C# Winforms. Đoạn mã này hoạt động tốt với bộ điều hợp pgsql 2.2.6. Điều chỉnh nào có thể được thực hiện để làm việc tốt với pgsql3.0.5 adapter? Cảm ơn.Lỗi C# Winforms Npgsql 3.0.5 "Đã xảy ra sự cố trong khi đang cố chạy nhiều lệnh trong cùng một kết nối
NpgsqlConnection conn = new NpgsqlConnection(MainForm2.MyConString);
{
conn.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand("SELECT rfid,name,sc_id from passenger ORDER by name", conn))
{
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var obj = new PassengerClass
{
RFID = dr.GetString(0),
Name = dr.GetString(1),
sc_id = dr.GetInt32(2)
};
s = dr.GetString(0);
try { ret.Add(s, obj); }
catch (Exception ex) { SM.Debug("Fail to add RFID Name in hash RFID:" + s + ex.ToString()); }
}
}
MainForm2.PassHash = ret;
try
{
using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format("UPDATE place set useridx ={0} where useridx=0", MainForm2.userIDX), conn))
cmd.ExecuteNonQuery();
using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format("UPDATE zonename set useridx ={0} where useridx=0", MainForm2.userIDX), conn))
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
SM.Debug("Error on update users IDX for place and zone with value 0 :" + ex.ToString());
}
Vì vậy, tại tuyên bố Lệnh thứ hai nó mang lại cho tôi những lỗi sau:
A first chance exception of type 'System.InvalidOperationException' occurred in Npgsql.dll
Additional information: An operation is already in progress.
Gỡ bỏ NpgsqlDataReader sẽ đóng kết nối, vì vậy sau khi đọc một số dữ liệu tôi cần mở lại? Phải là nguyên tử, cô lập mỗi câu lệnh sql theo phương pháp khác nhau? Cảm ơn. –
Gỡ bỏ NpgsqlDataReader không đóng kết nối - chỉ xử lý kết nối thực hiện điều đó. Một trình đọc mở tương ứng với một lệnh đang chạy, mà bạn phải đóng trước khi thực hiện một lệnh mới. Đối với atomicity chỉ bắt đầu một giao dịch bao gồm một số lệnh. –
Cảm ơn. Bây giờ làm việc như một say mê. –