在對 Access 做存取的時候,參數明明都有正確進去,為什麼還是取不到東西...?

  • 4053
  • 0

摘要:在對 Access 做存取的時候,參數明明都有正確進去,為什麼還是取不到東西...?

Access 跟 SQL Server 的參數語法不太一樣,

雖然在  ADO.NET 這一端它也支援防止 SQL Injection 用的參數化語法,

但是在 Access 這一端卻不認得什麼參數名稱,只認得參數的「順序」,

因此,如果發生類似的狀況,請將參數的順序調整到跟您的 T-SQL 語法一致,

例如:

cmd.CommandText = "select * from xxx where name like '%' + @name + '%' and catelogID=@catelogID";
cmd.Parameters.Add(new OleDbParameter("@name", OleDbType.VarChar)).Value=name;
cmd.Parameters.Add(new OleDbParameter("@catelog", OleDbType.BigInt)).Value=catelogID;

加入參數的順序必須跟 T-SQL 語法各參數出現位置的順序一致,
不然會除錯除到沒辦法回家............