程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> OleDbCommand使用參數應該注意的地方

OleDbCommand使用參數應該注意的地方

編輯:C#入門知識

最近寫程序用到OleDbCommand的Parameter寫數據庫,遇到很多問題:

1、OLE DB .NET Framework 數據提供程序和 ODBC .NET Framework 數據提供程序不支持用於將參數傳遞到 SQL 語句或存儲過程的命名參數。在此情況下,必須使用問號 (?) 占位符,如以下示例所示。SELECT * FROM Customers WHERE CustomerID = ?

2、將參數用於OleDbCommand 或 OdbcCommand 時,向 Parameters 集合中添加參數的順序必須與存儲過程中所定義的參數順序相匹配。OLE DB .NET Framework 數據提供程序和 ODBC .NET Framework 數據提供程序將存儲過程中的參數視為占位符,並且將按順序使用這些參數值。另外,返回值參數必須是添加到 Parameters 集合中的第一批參數。
因此,向 Parameters 集合添加 Parameter 對象的順序必須直接對應於該參數的問號占位符的位置 

例如:

                string sql = "insert into T_Fundratesum(fundcode,yhcode,sumdate,period,m12brate,m12rrate,createtimestamp) values (?,?,?,?,?,?,?)";
                OleDbCommand comm = new OleDbCommand(sql, conn);
                comm.Parameters.Add(new OleDbParameter("@fundcode", OleDbType.VarChar));
                comm.Parameters[0].Value = dt.Rows[i]["yhcode"].ToString();
                comm.Parameters.Add(new OleDbParameter("@yhcode", OleDbType.VarChar));
                comm.Parameters[1].Value = dt.Rows[i]["fundcode"].ToString();
                comm.Parameters.Add(new OleDbParameter("@sumdate", OleDbType.Date));
                comm.Parameters[2].Value = DateTime.Now.ToString();
                comm.Parameters.Add(new OleDbParameter("@PERIOD", OleDbType.Double));
                comm.Parameters[3].Value = dt.Rows[i]["PERIOD"];
                comm.Parameters.Add(new OleDbParameter("@M12BRATE", OleDbType.Double));
                comm.Parameters[4].Value = dt.Rows[i]["M12BRATE"];
                comm.Parameters.Add(new OleDbParameter("@M12RRATE", OleDbType.Double));
                comm.Parameters[5].Value = dt.Rows[i]["M12RRATE"];
                comm.Parameters.Add(new OleDbParameter("@createtimestamp", OleDbType.VarChar));
                comm.Parameters[6].Value = DateTime.Now.ToString();

當然還有最笨的辦法就是,定義一個字符串,然後將其裡面的參數用string.replace替換。

我從網上查到一個網友的回復如下:我想應該是這樣的

1.SqlCommand should be '@' character 
2.OleDbCommand or OdbcCommand should be '?' character 
3.OracleCommand should be ':' character

唉,這些Command的不便利性使得用戶在使用時常常摸不到頭腦,不同的command有不同的參數格式設置,以後應該多多注意。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved