日期:2014-05-18  浏览次数:20728 次

SqlParameterCollection 仅接受非空的 SqlParameter 类型对象,不接受 String 对象
未处理的“System.InvalidCastException”类型的异常出现在   system.data.dll   中。

其他信息:   SqlParameterCollection   仅接受非空的   SqlParameter   类型对象,不接受   String   对象。

我的语句如下
SqlConnection   cn   =new   SqlConnection( "Password=sa;Persist   Security   Info=True;User   ID=sa;Initial   Catalog=test;Data   Source=server ");
cn.Open();
SqlCommand   sc=new   SqlCommand();
sc.Connection=cn;
sc.CommandType=CommandType.StoredProcedure;
sc.CommandText= "testsql ";
sc.Parameters.Add(new   SqlParameter( "@buy ",SqlDbType.VarChar,11).Value=buy.ToString());
sc.Parameters.Add(new   SqlParameter( "@date ",SqlDbType.VarChar,10).Value=date.ToString());

sc.Parameters.Add(new   SqlParameter( "@flag ",SqlDbType.VarChar,1).Value=flag.ToString());

sc.Parameters.Add(new   SqlParameter( "@ino ",SqlDbType.VarChar,15).Value=ino.ToString());
sc.Parameters.Add(new   SqlParameter( "@count ",SqlDbType.Int,4));

sc.ExecuteNonQuery();


请问要如何处理,我希望能在WebService中执行这样的过程???


------解决方案--------------------
sc.Parameters.Add(new SqlParameter( "@buy ",SqlDbType.VarChar,11).Value=buy.ToString());
sc.Parameters.Add(new SqlParameter( "@date ",SqlDbType.VarChar,10).Value=date.ToString());

sc.Parameters.Add(new SqlParameter( "@flag ",SqlDbType.VarChar,1).Value=flag.ToString());

sc.Parameters.Add(new SqlParameter( "@ino ",SqlDbType.VarChar,15).Value=ino.ToString());
sc.Parameters.Add(new SqlParameter( "@count ",SqlDbType.Int,4));
---》
sc.Parameters.Add(new SqlParameter( "@buy ",buy.ToString());
sc.Parameters.Add(new SqlParameter( "@date ",date.ToString());

sc.Parameters.Add(new SqlParameter( "@flag ",flag.ToString());

sc.Parameters.Add(new SqlParameter( "@ino ",ino.ToString());
sc.Parameters.Add(new SqlParameter( "@count ",count);
------解决方案--------------------
sc.Parameters.Add(new SqlParameter( "@buy ",SqlDbType.VarChar,11).Value=buy.ToString());

==>
SqlParameter buyParame = new SqlParameter( "@buy ",SqlDbType.VarChar,11);
tabParame.Value = buy.ToString();
sc.Parameters.Add(buyParam);
....
下面的依次...
------解决方案--------------------
sc.Parameters.Add( "@buy ",buy.ToString()); // 底下依次

除非你要写Output Parameter,不然Add(string paraName, object paraValue)这个重载就可以让你直接添加参数了。