关闭

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

标签: windowsintegerstring.netcommandserver
16492人阅读 评论(0) 收藏 举报
分类:
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.TextOracleCommand 调用的 SQL 语句传递参数时不支持问号 (?) 占位符。在这种情况下,必须使用命名的参数。例如:

复制代码
SELECT * FROM Customers WHERE CustomerID = :pCustomerID

CommandType.TextOracleCommand 调用的 SQL 语句中使用命名的参数时,参数名前面必须有一个冒号 (:)。但是,在存储过程或在代码的其他地方引用命名的参数时(例如,将OracleParameter 对象添加到Parameters 属性时),请不要在命名的参数前加上冒号 (:)。Oracle .NET Framework 数据提供程序会自动提供冒号。

下面的示例创建一个 OracleCommand 并显示其参数。要完成此任务,请向该方法传递一个OracleConnection、一个查询字符串(它是 SQL SELECT 语句)和一个OracleParameter 对象数组。

 
Visual Basic
复制代码
Public Sub CreateOracleCommand(ByVal connection As OracleConnection, _
ByVal queryString As String, ByVal prmArray() As OracleParameter)

    Dim command As New OracleCommand(queryString, connection)
    command.CommandText = _
        "SELECT * FROM Emp WHERE Job = :pJob AND Sal = :pSal"

    Dim j As Integer
    For j = 0 To prmArray.Length - 1
        command.Parameters.Add(prmArray(j))
    Next j

    Dim message As String = ""
    Dim i As Integer
    For i = 0 To command.Parameters.Count - 1
        message += command.Parameters(i).ToString() + ControlChars.Cr
    Next i

    Console.WriteLine(message)

    Dim reader As OracleDataReader = command.ExecuteReader
    While reader.Read
        Console.WriteLine(reader.GetValue(0))
    End While

End Sub
C#
复制代码
    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));
            }
        }
    }

.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:766757次
    • 积分:6613
    • 等级:
    • 排名:第3570名
    • 原创:88篇
    • 转载:57篇
    • 译文:0篇
    • 评论:25条
    最新评论