在使用OracleParameters时,CommandText 中的参数要以":"开头,不能包含@等特殊字符。而在其它地方引用到此参数时可以不必加上":",程序会自动为其加上":"
OracleCommand oracmd = oracon.CreateCommand();
oracmd.CommandText = "select
gas_user_no,vol_page,user_name,user_address,unit from gas_meter where
gas_user_no = :gas_userno";
if (!oracmd.Parameters.Contains("gas_userno"))
{
oracmd.Parameters.Add(new
OracleParameter("gas_userno", OracleDbType.Varchar2,
ParameterDirection.Input));
}
oracmd.Parameters["gas_userno"].Value = “666666”
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = oracmd;
DataTable dt = new DataTable();
da.Fill(dt);
OracleDataReader dr = oracmd.ExecuteReader();
以下为转载内容:
当 StoredProcedure 时,当调用 Execute 方法之一时,该命令将执行此存储过程。
OracleCommand 调用的 SQL 语句传递参数时不支持问号 (?) 占位符。例如:
OracleParameter 对象数组。
public void CreateOracleCommand(OracleConnection connection, string queryString, OracleParameter[] myParamArray) { OracleCommand command = new OracleCommand(queryString, connection); command.CommandText = "SELECT * FROM Emp WHERE Job = :pJob AND Sal = :pSal"; for (int j = 0; j < myParamArray.Length; j++) command.Parameters.Add(myParamArray[j]); string message = ""; for (int i = 0; i < command.Parameters.Count; i++) message += command.Parameters[i].ToString() + "\n"; Console.WriteLine(message); using (OracleDataReader row = command.ExecuteReader()) { while(row.Read()) { Console.WriteLine(row.GetValue(0)); } } }