簡體   English   中英

在C#中使用OleDbDataAdapter的參數

[英]Using Parameters with OleDbDataAdapter in C#

我正在使用OleDb來填充DataTable。 我正在嘗試使用參數化查詢,但它似乎不適用於OleDbDataAdapter。 有人有什么建議嗎?

cmd.CommandText = "SELECT A,B,C,D FROM someTable WHERE A=@A AND D BETWEEN @D1 AND @D2";
cmd.Parameters.Add("@A", OleDbType.VarChar).Value = "1234567";
cmd.Parameters.Add("@D1", OleDbType.DBDate).Value = "02/01/2011";
cmd.Parameters.Add("@D2", OleDbType.DBDate).Value = "01/31/2012";

A first chance exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
System.Data.OleDb.OleDbException (0x80040E11): [DB2] SQL0206N  "@A" is not valid in the context where it is used.  SQLSTATE=42703

請參閱http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx

“OLE DB.NET框架數據提供程序使用標有問號(?)而不是命名參數的位置參數。”

因此,您無法使用@Parameter語法,您必須使用問號指示參數,並以與查詢中顯示的完全相同的順序分配參數值。

對於那些在查詢甚至沒有參數時尋求幫助的人,請檢查列名是否有效。

請參閱@TheTerribleProgrammers在OleDbException處回答:沒有定義參數時沒有給出參數值

public static DataTable getDataGridList(string strCmd)
    {

        openConnection(conn);
        OleDbDataAdapter DADet = new OleDbDataAdapter(strCmd, conn);
        DataTable DTDet = new DataTable();
        DADet.Fill(DTDet);
        closeConnection(conn, null);
        return DTDet;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM