OracleParameter 的使用(参数名要以:开头,不允许包含@等特殊字符)[转]

在使用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();

 

以下为转载内容:

CommandType 属性设置为StoredProcedure 时,CommandText 属性应设置为存储过程的名称。如果存储过程名称包含任何特殊字符,则可能会要求用户使用转义符语法。当调用 Execute 方法之一时,该命令将执行此存储过程。

用于 Oracle 的 .NET Framework 数据提供程序在向由CommandType.Text 的OracleCommand 调用的 SQL 语句传递参数时不支持问号 (?) 占位符。在这种情况下,必须使用命名的参数。例如:

 
复制代码
 示例

下面的示例创建一个 OracleCommand 并显示其参数。要完成此任务,请向该方法传递一个OracleConnection、一个查询字符串(它是 SQL SELECT 语句)和一个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));
            }
        }
    }

 

posted @ 2015-09-23 14:28  jimcsharp  阅读(4051)  评论(0编辑  收藏  举报