简体   繁体   English

OracleParameter to Int32问题

[英]OracleParameter to Int32 issue

I have a SQL code as follows: 我有一个如下的SQL代码:

public void UpdateDatabase(String strParam1, int row)
        {
            System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection();
            conn.ConnectionString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.144)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)));UID=mwm;PWD=mwm"; 
                conn.Open();
                OracleCommand command = conn.CreateCommand();                       
               command.CommandText = "Select id from Task";
                OracleParameter taskId = new OracleParameter();
                taskId.DbType = DbType.Int32;                        
                taskId.Value = taskId;
                taskId.ParameterName = "taskId";
                command.Parameters.Add(taskId);
                command.ExecuteNonQuery();
                command.Dispose();
            }
        }

When ExecuteNonQuery is reached, I get an error "Failed to convert parameter value from a OracleParameter to a Int32" What is wrong here? 到达ExecuteNonQuery时,出现错误“无法将参数值从OracleParameter转换为Int32”这是什么问题? I googled but couldn't come to a conclusion. 我用谷歌搜索,但无法得出结论。

In this taskId.Value = taskId; 在此taskId.Value = taskId; you are assigning taskId which is of OracleParameter type a value taskID , its is expecting an int value. 您正在为taskId分配OracleParameter类型的值taskID ,它期望一个int值。 In other words you are assigning the same thing to its value parameter. 换句话说,您正在为其值参数分配相同的内容。 Since you have defined: taskId.DbType = DbType.Int32; 由于您已定义: taskId.DbType = DbType.Int32; it is expecting an int value, and probably you miss typed it to assign taskId again. 它期望一个int值,可能您可能错过了再次键入它来分配taskId

添加调整您的查询

"Select id from Task where id = taskId";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM