我有一个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();
}
}
当达到ExecuteNonQuery时,我收到错误“无法将参数值从OracleParameter转换为Int32”这里有什么问题?我用Google搜索但无法得出结论。
答案 0 :(得分:1)
在此taskId.Value = taskId;
中,您指定的taskId
是OracleParameter类型的值taskID
,它期望一个int值。换句话说,您正在为其value参数指定相同的内容。
由于您已经定义了taskId.DbType = DbType.Int32;
,因此它需要一个int值,并且您可能会错过键入它以再次分配taskId
。
答案 1 :(得分:0)
添加调整您的查询
"Select id from Task where id = taskId";