C# PGSQL 關於SQL參數的例示


工作關系 同時使用SQL SERVER 與Postgresql 數據庫,

            clientChar = txtClientChar.Text.Trim();
            sql = "select client_id,client_code,name,client_level_id,client_custom_options_ids, area_id,location ";
            sql += " from client where client_code = @pClient_Code or name like @pName";
            NpgsqlParameter[] sqlPara = new NpgsqlParameter[2];
            //pgsql 的參數與SQL SERVER 的格式不一樣
            sqlPara[0] = new NpgsqlParameter("@pClient_Code", NpgsqlTypes.NpgsqlDbType.Text,20);
            sqlPara[0].Value = clientChar;
            sqlPara[1] = new NpgsqlParameter("@pName", NpgsqlTypes.NpgsqlDbType.Text,100);
            sqlPara[1].Value = '%' + clientChar + '%';
            DataTable dt = DBHelperPg.ExecuteDataTable(sql, sqlPara);
            dataGridView1.DataSource = dt;

附:DBHelperpg.cs

 1  class DBHelperPg
 2     {
 3 
 4         public static string ConnectionString = ConfigurationManager.AppSettings["postgre"].ToString();
 5 
 6 
 7         /// <summary>  
 8         /// 執行SQL語句  
 9         /// </summary>  
10         /// <param name="sql">SQL</param>  
11         /// <returns>成功返回大於0的數字</returns>  
12         public static int ExecuteSQL(string sql)
13         {
14             int num2 = -1;
15             using (NpgsqlConnection connection = new NpgsqlConnection(ConnectionString))
16             {
17                 using (NpgsqlCommand command = new NpgsqlCommand(sql, connection))
18                 {
19                     try
20                     {
21                         connection.Open();
22                         num2 = command.ExecuteNonQuery();
23                     }
24                     catch (NpgsqlException exception)
25                     {
26                         throw new Exception(exception.Message);
27                     }
28                     finally
29                     {
30                         connection.Close();
31                     }
32                 }
33             }
34             return num2;
35         }
36 
37         //帶參數的執行查詢,不返回結果,返回影響行數
38         //執行SQL語句並返回受影響的行數
39         public static int ExecuteNonQuery(string sql, params NpgsqlParameter[] parameters)
40         {
41             using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
42             {
43                 conn.Open();
44                 using (NpgsqlCommand cmd = conn.CreateCommand())
45                 {
46                     cmd.CommandText = sql;
47                     //foreach (SqlParameter param in parameters)
48                     //{
49                     //    cmd.Parameters.Add(param);
50                     //}
51                     cmd.Parameters.AddRange(parameters);
52                     return cmd.ExecuteNonQuery();
53                 }
54             }
55         }
56 
57         //執行查詢,並返回查詢所返回的結果集中第一行的第一列。忽略額外的列或行。
58         public static object ExecuteScalar(string sql, params NpgsqlParameter[] parameters)
59         {
60             using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
61             {
62                 conn.Open();
63                 using (NpgsqlCommand cmd = conn.CreateCommand())
64                 {
65                     cmd.CommandText = sql;
66                     cmd.Parameters.AddRange(parameters);
67                     return cmd.ExecuteScalar();
68 
69                 }
70             }
71         }
72 
73 
74 
75 
76         //查詢並返回結果集DataTable,一般只用來執行查詢結果比較少的sql。
77         public static DataTable ExecuteDataTable(string sql, params NpgsqlParameter[] parameters)
78         {
79             using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
80             {
81                 conn.Open();
82                 using (NpgsqlCommand cmd = conn.CreateCommand())
83                 {
84                     cmd.CommandText = sql;
85                     cmd.Parameters.AddRange(parameters);
86 
87                     NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
88                     DataSet dataset = new DataSet();
89                     adapter.Fill(dataset);
90                     return dataset.Tables[0];
91                 }
92             }
93 
94             //查詢較大的數據用 DateRead(),但應盡可能用分頁數據,仍然用datatable更好。
95         }
96     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM