public string NewID() { string i = ""; string sQuery = "select '" + clsGlobal.pstrservercode + "'||nextval('tbm_carrepair_nextid') as id;"; Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand(sQuery, Koneksi); cmd.CommandText = sQuery; try { Npgsql.NpgsqlDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { if (!rdr.IsDBNull(rdr.GetOrdinal("id"))) { i = rdr.GetValue(0).ToString(); } else { i = ""; }; } rdr.Close(); } catch (Npgsql.NpgsqlException Ex) { System.Windows.Forms.MessageBox.Show(Ex.Message, "An error occurred while processing!!!"); return(""); } return(i); }
/// <summary> /// 执行存储过程或Sql语句返回DataTable /// </summary> /// <param name="sql">存储过程名称或Sql语句</param> /// <param name="commandType">命令类型</param> /// <param name="paras">参数</param> /// <returns></returns> public DataTable Run(string sql, CommandType commandType, params object[] paras) { DataTable table = new DataTable(); switch (this.DBType) { case DBTypeEnum.SqlServer: SqlConnection con = this.Database.GetDbConnection() as SqlConnection; SqlDataAdapter adapter = new SqlDataAdapter(); using (SqlCommand cmd = new SqlCommand(sql, con)) { adapter.SelectCommand = cmd; cmd.CommandTimeout = 2400; cmd.CommandType = commandType; if (paras != null) { foreach (var param in paras) { cmd.Parameters.Add(param); } } adapter.Fill(table); adapter.SelectCommand.Parameters.Clear(); } break; case DBTypeEnum.MySql: MySqlConnection mySqlCon = this.Database.GetDbConnection() as MySqlConnection; using (MySqlCommand cmd = new MySqlCommand(sql, mySqlCon)) { if (mySqlCon.State == ConnectionState.Closed) { mySqlCon.Open(); } cmd.CommandTimeout = 2400; cmd.CommandType = commandType; if (paras != null) { foreach (var param in paras) { cmd.Parameters.Add(param); } } MySqlDataReader dr = cmd.ExecuteReader(); table.Load(dr); dr.Close(); mySqlCon.Close(); } break; case DBTypeEnum.PgSql: Npgsql.NpgsqlConnection npgCon = this.Database.GetDbConnection() as Npgsql.NpgsqlConnection; using (Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand(sql, npgCon)) { if (npgCon.State == ConnectionState.Closed) { npgCon.Open(); } cmd.CommandTimeout = 2400; cmd.CommandType = commandType; if (paras != null) { foreach (var param in paras) { cmd.Parameters.Add(param); } } Npgsql.NpgsqlDataReader dr = cmd.ExecuteReader(); table.Load(dr); dr.Close(); npgCon.Close(); } break; case DBTypeEnum.SQLite: case DBTypeEnum.Oracle: var connection = this.Database.GetDbConnection(); var isClosed = connection.State == ConnectionState.Closed; if (isClosed) { connection.Open(); } using (var command = connection.CreateCommand()) { command.CommandText = sql; command.CommandTimeout = 2400; command.CommandType = commandType; if (paras != null) { foreach (var param in paras) { command.Parameters.Add(param); } } using (var reader = command.ExecuteReader()) { table.Load(reader); } } if (isClosed) { connection.Close(); } break; } return(table); }
public void testDataReader(NpgsqlDataReader reader) { if (reader != null) { if (reader.HasRows) { while (reader.Read()) {// oid geomText //string oid = reader["oid"].ToString(); //string geomText = reader["geomText"].ToString(); for (int i = 0; i < reader.FieldCount; i++) { string value = reader[i].ToString(); } } reader.Close(); reader.Dispose(); } } }
/// <summary> /// 若使用【读写分离】,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 /// </summary> /// <param name="readerHander"></param> /// <param name="cmdType"></param> /// <param name="cmdText"></param> /// <param name="cmdParms"></param> /// <returns></returns> async public Task ExecuteReaderAsync(Func <NpgsqlDataReader, Task> readerHander, CommandType cmdType, string cmdText, params NpgsqlParameter[] cmdParms) { DateTime dt = DateTime.Now; string logtxt = ""; DateTime logtxt_dt = DateTime.Now; var pool = this.MasterPool; bool isSlave = false; //读写分离规则 if (this.SlavePools.Any() && cmdText.StartsWith("SELECT ", StringComparison.CurrentCultureIgnoreCase)) { var availables = slaveUnavailables == 0 ? //查从库 this.SlavePools : ( //查主库 slaveUnavailables == this.SlavePools.Count ? new List <NpgsqlConnectionPool>() : //查从库可用 this.SlavePools.Where(sp => sp.IsAvailable).ToList()); if (availables.Any()) { isSlave = true; pool = availables.Count == 1 ? this.SlavePools[0] : availables[slaveRandom.Next(availables.Count)]; } } Object <NpgsqlConnection> conn = null; NpgsqlCommand cmd = PrepareCommandAsync(cmdType, cmdText, cmdParms, ref logtxt); if (IsTracePerformance) { logtxt += $"PrepareCommand: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; } Exception ex = null; try { if (IsTracePerformance) { logtxt_dt = DateTime.Now; } if (isSlave) { //从库查询切换,恢复 bool isSlaveFail = false; try { if (cmd.Connection == null) { cmd.Connection = (conn = await pool.GetAsync()).Value; } //if (slaveRandom.Next(100) % 2 == 0) throw new Exception("测试从库抛出异常"); } catch { isSlaveFail = true; } if (isSlaveFail) { if (conn != null) { if (IsTracePerformance) { logtxt_dt = DateTime.Now; } pool.Return(conn, ex); if (IsTracePerformance) { logtxt += $"ReleaseConnection: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms"; } } LoggerException(pool, cmd, new Exception($"连接失败,准备切换其他可用服务器"), dt, logtxt, false); cmd.Parameters.Clear(); await ExecuteReaderAsync(readerHander, cmdType, cmdText, cmdParms); return; } } else { //主库查询 if (cmd.Connection == null) { cmd.Connection = (conn = await pool.GetAsync()).Value; } } if (IsTracePerformance) { logtxt += $"Open: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; logtxt_dt = DateTime.Now; } using (NpgsqlDataReader dr = await cmd.ExecuteReaderAsync() as NpgsqlDataReader) { if (IsTracePerformance) { logtxt += $"ExecuteReader: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; } while (true) { if (IsTracePerformance) { logtxt_dt = DateTime.Now; } bool isread = await dr.ReadAsync(); if (IsTracePerformance) { logtxt += $" dr.Read: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; } if (isread == false) { break; } if (readerHander != null) { object[] values = null; if (IsTracePerformance) { logtxt_dt = DateTime.Now; values = new object[dr.FieldCount]; for (int a = 0; a < values.Length; a++) { if (!await dr.IsDBNullAsync(a)) { values[a] = await dr.GetFieldValueAsync <object>(a); } } logtxt += $" dr.GetValues: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; logtxt_dt = DateTime.Now; } await readerHander(dr); if (IsTracePerformance) { logtxt += $" readerHander: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms ({string.Join(",", values)})\r\n"; } } } if (IsTracePerformance) { logtxt_dt = DateTime.Now; } dr.Close(); } if (IsTracePerformance) { logtxt += $"ExecuteReader_dispose: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms\r\n"; } } catch (Exception ex2) { ex = ex2; } if (conn != null) { if (IsTracePerformance) { logtxt_dt = DateTime.Now; } pool.Return(conn, ex); if (IsTracePerformance) { logtxt += $"ReleaseConnection: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms"; } } LoggerException(pool, cmd, ex, dt, logtxt); cmd.Parameters.Clear(); }
public bool GetByPrimaryKey(string pKey) { string sQuery = "select * from tbm_carrepair WHERE repairid='" + pKey + "'"; Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand(sQuery, Koneksi); cmd.CommandText = sQuery; Npgsql.NpgsqlDataReader rdr = cmd.ExecuteReader(); try { if (rdr.Read()) { if (!rdr.IsDBNull(rdr.GetOrdinal("repairid"))) { m_repairid = rdr.GetString(rdr.GetOrdinal("repairid")); } else { m_repairid = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("carid"))) { m_carid = rdr.GetString(rdr.GetOrdinal("carid")); } else { m_carid = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("opadd"))) { m_opadd = rdr.GetString(rdr.GetOrdinal("opadd")); } else { m_opadd = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("pcadd"))) { m_pcadd = rdr.GetString(rdr.GetOrdinal("pcadd")); } else { m_pcadd = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("luadd"))) { m_luadd = rdr.GetDateTime(rdr.GetOrdinal("luadd")); } else { m_luadd = System.DateTime.MinValue; }; if (!rdr.IsDBNull(rdr.GetOrdinal("opedit"))) { m_opedit = rdr.GetString(rdr.GetOrdinal("opedit")); } else { m_opedit = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("pcedit"))) { m_pcedit = rdr.GetString(rdr.GetOrdinal("pcedit")); } else { m_pcedit = ""; }; if (!rdr.IsDBNull(rdr.GetOrdinal("luedit"))) { m_luedit = rdr.GetDateTime(rdr.GetOrdinal("luedit")); } else { m_luedit = System.DateTime.MinValue; }; m_dlt = rdr.GetBoolean(rdr.GetOrdinal("dlt")); } return(true); } catch (Npgsql.NpgsqlException Ex) { System.Windows.Forms.MessageBox.Show(Ex.Message, "An error occurred while processing!!!"); return(false); } finally { if (rdr != null) { rdr.Close(); } } }
public DataSet get_data_mmyy(string str, string tu, string den) { DataSet tmp = null; DateTime dt1 = StringToDate(tu); DateTime dt2 = StringToDate(den); int y1 = dt1.Year, m1 = dt1.Month; int y2 = dt2.Year, m2 = dt2.Month; int itu, iden; string mmyy = ""; bool be = true; Npgsql.NpgsqlConnection connct = new NpgsqlConnection(ConStr); connct.Open(); for (int i = y1; i <= y2; i++) { itu = (i == y1) ? m1 : 1; iden = (i == y2) ? m2 : 12; for (int j = itu; j <= iden; j++) { mmyy = j.ToString().PadLeft(2, '0') + i.ToString().Substring(2, 2); if (bMmyy(mmyy)) { sql = str.Replace("xxx", "medibv" + mmyy); sql = str.Replace("medibvmmyy", "medibv" + mmyy); using (Npgsql.NpgsqlCommand cmm = new NpgsqlCommand(sql, connct)) { // cmm.Connection.Open(); Npgsql.NpgsqlDataReader drd = null; try { drd = cmm.ExecuteReader(); if (tmp == null) { tmp = new DataSet(); } if (tmp.Tables.Count == 0 && drd.FieldCount > 0) { tmp.Tables.Add("Table"); } if (tmp.Tables.Count > 0) { for (int ia = 0; ia < drd.FieldCount; ia++) { if (!tmp.Tables[0].Columns.Contains(drd.GetName(ia))) { tmp.Tables[0].Columns.Add(drd.GetName(ia), drd.GetFieldType(ia)); } } while (drd.Read()) { DataRow ndtr = tmp.Tables[0].NewRow(); for (int ie = 0; ie < drd.FieldCount; ie++) { ndtr[drd.GetName(ie)] = drd[ie]; } tmp.Tables[0].Rows.Add(ndtr); } } } catch { } finally { if (drd != null) { drd.Close(); drd.Dispose(); } } } } } } connct.Close(); return(tmp); }
private void Construct(NpgsqlDataReader reader) { _id = Convert.ToInt32(reader[Table + "_" + Columns.Id]); _name = Convert.ToString(reader[Table + "_" + Columns.Name]); _shapefile = new Shapefile(Convert.ToInt32(reader[Table + "_" + Columns.ShapefileId])); NpgsqlCommand cmd = DB.Connection.NewCommand("SELECT " + "st_xmin(" + ShapefileGeometry.Columns.Geometry + ") as left," + "st_xmax(" + ShapefileGeometry.Columns.Geometry + ") as right," + "st_ymin(" + ShapefileGeometry.Columns.Geometry + ") as bottom," + "st_ymax(" + ShapefileGeometry.Columns.Geometry + ") as top " + "FROM " + _shapefile.GeometryTable); reader = cmd.ExecuteReader(); double left = double.MaxValue; double right = double.MinValue; double bottom = double.MaxValue; double top = double.MinValue; while (reader.Read()) { double l = Convert.ToDouble(reader["left"]); if (l < left) left = l; double r = Convert.ToDouble(reader["right"]); if (r > right) right = r; double b = Convert.ToDouble(reader["bottom"]); if (b < bottom) bottom = b; double t = Convert.ToDouble(reader["top"]); if (t > top) top = t; } reader.Close(); DB.Connection.Return(cmd.Connection); _boundingBox = new PostGIS.Polygon(new PostGIS.LineString(new List<PostGIS.Point>(new PostGIS.Point[]{ new PostGIS.Point(left, top, _shapefile.SRID), new PostGIS.Point(right, top, _shapefile.SRID), new PostGIS.Point(right, bottom, _shapefile.SRID), new PostGIS.Point(left, bottom, _shapefile.SRID), new PostGIS.Point(left, top, _shapefile.SRID)}), _shapefile.SRID), _shapefile.SRID); }
// //------------------------------------------------------------------------------------------------- // public bool ds2browse(string browse_type_in, string browse_category_in, string browse_actor_in, string browse_title_in, int batch_size_in, int customerid_out, ref int rows_returned, ref int[] prod_id_out, ref string[] title_out, ref string[] actor_out, ref decimal[] price_out, ref int[] special_out, ref int[] common_prod_id_out, ref double rt) { // Products table: PROD_ID INT, CATEGORY TINYINT, TITLE VARCHAR(50), ACTOR VARCHAR(50), // PRICE DECIMAL(12,2), SPECIAL TINYINT, COMMON_PROD_ID INT int i_row; string data_in = null; int[] category_out = new int[GlobalConstants.MAX_ROWS]; #if (USE_WIN32_TIMER) long ctr0 = 0, ctr = 0, freq = 0; #else TimeSpan TS = new TimeSpan(); DateTime DT0; #endif switch(browse_type_in) { case "category": Browse_By_Category.Parameters["batch_size_in"].Value = batch_size_in; Browse_By_Category.Parameters["category_in"].Value = Convert.ToInt32(browse_category_in); data_in = browse_category_in; break; case "actor": Browse_By_Actor.Parameters["batch_size_in"].Value = batch_size_in; Browse_By_Actor.Parameters["actor_in"].Value = "\"" + browse_actor_in + "\""; data_in = "\"" + browse_actor_in + "\""; break; case "title": Browse_By_Title.Parameters["batch_size_in"].Value = batch_size_in; Browse_By_Title.Parameters["title_in"].Value = "\"" + browse_title_in + "\""; data_in = "\"" + browse_title_in + "\""; break; } // Console.WriteLine("Thread {0}: Calling Browse w/ browse_type= {1} batch_size_in= {2} data_in= {3}", // Thread.CurrentThread.Name, browse_type_in, batch_size_in, data_in); #if (USE_WIN32_TIMER) QueryPerformanceFrequency(ref freq); // obtain system freq (ticks/sec) QueryPerformanceCounter(ref ctr0); // Start response time clock #else DT0 = DateTime.Now; #endif try { switch(browse_type_in) { case "category": Rdr = Browse_By_Category.ExecuteReader(); break; case "actor": Rdr = Browse_By_Actor.ExecuteReader(); break; case "title": Rdr = Browse_By_Title.ExecuteReader(); break; } i_row = 0; while (Rdr.Read()) { prod_id_out[i_row] = Rdr.GetInt32(0); category_out[i_row] = Rdr.GetInt16(1); title_out[i_row] = Rdr.GetString(2); actor_out[i_row] = Rdr.GetString(3); price_out[i_row] = Rdr.GetDecimal(4); special_out[i_row] = Rdr.GetInt16(5); common_prod_id_out[i_row] = Rdr.GetInt32(6); ++i_row; } Rdr.Close(); rows_returned = i_row; } catch (NpgsqlException e) { Console.WriteLine("Thread {0}: Error in Browse: {1}", Thread.CurrentThread.Name, e.Message); return(false); } #if (USE_WIN32_TIMER) QueryPerformanceCounter(ref ctr); // Stop response time clock rt = (ctr - ctr0)/(double) freq; // Calculate response time #else TS = DateTime.Now - DT0; rt = TS.TotalSeconds; // Calculate response time #endif return(true); }
// //------------------------------------------------------------------------------------------------- // public bool ds2purchase(int cart_items, int[] prod_id_in, int[] qty_in, int customerid_out, ref int neworderid_out, ref bool IsRollback, ref double rt) { int i, j; #if (USE_WIN32_TIMER) long ctr0 = 0, ctr = 0, freq = 0; #else TimeSpan TS = new TimeSpan(); DateTime DT0; #endif //Cap cart_items at 10 for this implementation of stored procedure cart_items = System.Math.Min(10, cart_items); // Extra, non-stored procedure query to find total cost of purchase Decimal netamount_in = 0; //Modified by GSK for parameterization of query below - Affects performance in case of Query Caching //string cost_query = "select PROD_ID, PRICE from PRODUCTS where PROD_ID in (" + prod_id_in[0]; //for (i=1; i<cart_items; i++) cost_query = cost_query + "," + prod_id_in[i]; //cost_query = cost_query + ")"; ////Console.WriteLine(cost_query); //NpgsqlCommand cost_command = new NpgsqlCommand(cost_query, objConn); //Parameterized query by GSK string cost_query = "select PROD_ID, PRICE from PRODUCTS where PROD_ID in ( @ARG0"; for ( i = 1 ; i < cart_items ; i++ ) cost_query = cost_query + ", @ARG" + i; cost_query = cost_query + ")"; NpgsqlCommand cost_command = new NpgsqlCommand ( cost_query , objConn ); string ArgHolder; for ( i = 0 ; i < cart_items ; i++ ) { ArgHolder = "@ARG" + i; cost_command.Parameters.Add ( ArgHolder , NpgsqlDbType.Integer ); cost_command.Parameters[ArgHolder].Value = prod_id_in[i]; //Console.WriteLine (cost_command.Parameters[ArgHolder].Value); } Rdr = cost_command.ExecuteReader(); while (Rdr.Read()) { j = 0; int prod_id = Rdr.GetInt32(0); while (prod_id_in[j] != prod_id) ++j; // Find which product was returned netamount_in = netamount_in + qty_in[j] * Rdr.GetDecimal(1); //Console.WriteLine(j + " " + prod_id + " " + Rdr.GetDecimal(1)); } Rdr.Close(); // Can use following code instead if you don't want extra roundtrip to database: // Random rr = new Random(DateTime.Now.Millisecond); // Decimal netamount_in = (Decimal) (0.01 * (1 + rr.Next(40000))); Decimal taxamount_in = (Decimal) 0.0825 * netamount_in; Decimal totalamount_in = netamount_in + taxamount_in; //Console.WriteLine(netamount_in); Purchase.Parameters["customerid_in"].Value = customerid_out; Purchase.Parameters["number_items"].Value = cart_items; Purchase.Parameters["netamount_in"].Value = netamount_in; Purchase.Parameters["taxamount_in"].Value = taxamount_in; Purchase.Parameters["totalamount_in"].Value = totalamount_in; Purchase.Parameters["prod_id_in0"].Value = prod_id_in[0]; Purchase.Parameters["qty_in0"].Value = qty_in[0]; Purchase.Parameters["prod_id_in1"].Value = prod_id_in[1]; Purchase.Parameters["qty_in1"].Value = qty_in[1]; Purchase.Parameters["prod_id_in2"].Value = prod_id_in[2]; Purchase.Parameters["qty_in2"].Value = qty_in[2]; Purchase.Parameters["prod_id_in3"].Value = prod_id_in[3]; Purchase.Parameters["qty_in3"].Value = qty_in[3]; Purchase.Parameters["prod_id_in4"].Value = prod_id_in[4]; Purchase.Parameters["qty_in4"].Value = qty_in[4]; Purchase.Parameters["prod_id_in5"].Value = prod_id_in[5]; Purchase.Parameters["qty_in5"].Value = qty_in[5]; Purchase.Parameters["prod_id_in6"].Value = prod_id_in[6]; Purchase.Parameters["qty_in6"].Value = qty_in[6]; Purchase.Parameters["prod_id_in7"].Value = prod_id_in[7]; Purchase.Parameters["qty_in7"].Value = qty_in[7]; Purchase.Parameters["prod_id_in8"].Value = prod_id_in[8]; Purchase.Parameters["qty_in8"].Value = qty_in[8]; Purchase.Parameters["prod_id_in9"].Value = prod_id_in[9]; Purchase.Parameters["qty_in9"].Value = qty_in[9]; // Console.WriteLine("Thread {0}: Calling Purchase w/ customerid = {1} number_items= {2}", // Thread.CurrentThread.Name, customerid_out, cart_items); #if (USE_WIN32_TIMER) QueryPerformanceFrequency(ref freq); // obtain system freq (ticks/sec) QueryPerformanceCounter(ref ctr0); // Start response time clock #else DT0 = DateTime.Now; #endif bool deadlocked; do { try { deadlocked = false; neworderid_out = (int) Purchase.ExecuteScalar(); } catch (NpgsqlException e) { if (e.Code == "40P01") { deadlocked = true; Random r = new Random(DateTime.Now.Millisecond); int wait = r.Next(1000); Console.WriteLine("Thread {0}: Purchase deadlocked...waiting {1} msec, then will retry", Thread.CurrentThread.Name, wait); Thread.Sleep(wait); // Wait up to 1 sec, then try again } else if (e.Code == "P0001") { deadlocked=false; neworderid_out = 0; } else { Console.WriteLine("Thread {0}: SQL Error {1} in Purchase: {2}", Thread.CurrentThread.Name, e.Code, e.Message); return(false); } } } while (deadlocked); #if (USE_WIN32_TIMER) QueryPerformanceCounter(ref ctr); // Stop response time clock rt = (ctr - ctr0)/(double) freq; // Calculate response time #else TS = DateTime.Now - DT0; rt = TS.TotalSeconds; // Calculate response time #endif if (neworderid_out == 0) IsRollback = true; return(true); }
// //------------------------------------------------------------------------------------------------- // public bool ds2login(string username_in, string password_in, ref int customerid_out, ref int rows_returned, ref string[] title_out, ref string[] actor_out, ref string[] related_title_out, ref double rt) { #if (USE_WIN32_TIMER) long ctr0 = 0, ctr = 0, freq = 0; #else TimeSpan TS = new TimeSpan(); DateTime DT0; #endif Login.Parameters["username_in"].Value = username_in; Login.Parameters["password_in"].Value = password_in; #if (USE_WIN32_TIMER) QueryPerformanceFrequency(ref freq); // obtain system freq (ticks/sec) QueryPerformanceCounter(ref ctr0); // Start response time clock #else DT0 = DateTime.Now; #endif NpgsqlTransaction t ; try { t = objConn.BeginTransaction(); Rdr = Login.ExecuteReader(); Rdr.Read(); customerid_out = Rdr.GetInt32(0); } catch (NpgsqlException e) { Console.WriteLine("Thread {0}: Error in Login: {1}", Thread.CurrentThread.Name, e.Message); return (false); } int i_row = 0; if ((customerid_out > 0) && Rdr.NextResult()) { while (Rdr.Read()) { title_out[i_row] = Rdr.GetString(0); actor_out[i_row] = Rdr.GetString(1); related_title_out[i_row] = Rdr.GetString(2); ++i_row; } } Rdr.Close(); t.Commit(); rows_returned = i_row; #if (USE_WIN32_TIMER) QueryPerformanceCounter(ref ctr); // Stop response time clock rt = (ctr - ctr0)/(double) freq; // Calculate response time #else TS = DateTime.Now - DT0; rt = TS.TotalSeconds; // Calculate response time #endif return(true); }