关于sqlcommand的奇怪问题!!请各位帮帮忙!!
我现在datacon类中定义了一个public int procomAddress(string comtext,int fid,string str_linkname)这个函数
- C# code
public int procomAddress(string comtext,int fid,string str_linkname) { int i = 0; using (sqlcom) { try { sqlcom.CommandType = CommandType.StoredProcedure; sqlcom.CommandText = comtext; SqlParameter[] prams = { new SqlParameter("@fid",SqlDbType.Int), new SqlParameter("@file_file",SqlDbType.VarChar,100), new SqlParameter("@ret",SqlDbType.Int) }; prams[0].Value = fid; prams[1].Value = str_linkname; prams[2].Direction = ParameterDirection.Output; foreach (SqlParameter parmameter in prams) { sqlcom.Parameters.Add(parmameter); } //SqlParameter sqlpar = sqlcom.Parameters.Add("@Return", SqlDbType.Int); // sqlpar.Direction = ParameterDirection.ReturnValue; sqlcom.ExecuteNonQuery(); i = Convert.ToInt16(sqlcom.Parameters["@ret"].Value.ToString()); sqlcom.Dispose(); return i; } catch (Exception eu) { MessageBox.Show("信息有误!"); MessageBox.Show(eu.ToString()); return i; } } }我用datacon.procomAddress("file_insertfileaddress",fid,str_linkname);和
datacon.procomAddress("file_deletefileaddress", fid, str_linkname);分别完成插入和删除两项功能
运行程序时若要是插入了,不退出程序立马删除就报错说我指定了过多参数,如果退出程序再执行则正常不知为何,请各位指教!!
[解决办法]
第一.sqlcom实例化没有? sqlComamnd sqlcom=new sqlComand("SQL语句",sqlconn);
第二.你用了 using (sqlcom)就可以不用sqlcom.Dispose()了;
第三.你执行sqlcom.ExecuteNonQuery()是有没有打开数据库连接sqlconn.open();并且执行完要关闭连接sqlconn.close();
[解决办法]
using (SqlCommand sqlcom = new SqlCommand)换下
试试
[解决办法]
sqlcom 这个你用的是全局的吧.
在方法里现用现new吧.
[解决办法]
你看一下你的SqlParameters[] 数组 parms 将断点设置在sqlcom.ExecuteNonQuery();
看以下 parms在多次执行后有几个元素
[解决办法]
你应该在执行结束后,及时地清空或者释放掉parms数组 否则 就会出现设置参数过多的现象