首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于sqlcommand的奇怪有关问题!请各位帮帮忙!

2012-01-15 
关于sqlcommand的奇怪问题!!请各位帮帮忙!!我现在datacon类中定义了一个public int procomAddress(string

关于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数组 否则 就会出现设置参数过多的现象

热点排行