日期:2014-05-19  浏览次数:20914 次

小菜问题3 需要参数 @isbn1,但未提供该参数
SqlConnection   con   =   new   SqlConnection(link.connectionString);                        
                        SqlCommand   cmd1=   new   SqlCommand();
                        cmd1.Connection   =   con;
                        ////   Create   the   DeleteCommand.
                        cmd1.CommandText   =   "   delete   BookInfo     where   isbn=@isbn1 ";
                        cmd1.Parameters.Add( "@isbn1 ",   SqlDbType.VarChar,   20,   "@isbn1 ");
                        cmd1.Parameters[0].Value   =   " ";
                        da.DeleteCommand   =   cmd1;

                        if   (cm.Count   >   0)
                        {  
                                string   isBN   =   dataGridView1[0,   cm.Position].Value.ToString().Trim();
                                cm.RemoveAt(cm.Position);
                              da.DeleteCommand.Parameters[ "@isbn1 "].Value   =   isBN;
                                da.Update(ds.Tables[ "Table1 "]);
                               
                        }

--------------------------------------

参数化查询   '(@isbn1   varchar(20))   delete   BookInfo     where   isbn=@isbn1 '   需要参数   @isbn1,但未提供该参数。


------解决方案--------------------
cmd1.Parameters.Add( "@isbn1 ", SqlDbType.VarChar, 20, "@isbn1 ");
这句话有问题吧,最后的参数那个参数是前面@isbn1所对应的值,你没有指定值吧


要不你直接这样写
cmd1.Parameters.Add( "@isbn1 ", SqlDbType.VarChar, 20);
反正值你后面也指定了

----------------
我没这么用过,不过我觉得有可能是这个原因吧


------解决方案--------------------
cmd1.Parameters.Add( "@isbn1 ", SqlDbType.VarChar);
------解决方案--------------------
" "里面是给@isbn1赋的值
好象这里也错了
cmd1.Parameters.Add( "@isbn1 ", SqlDbType.VarChar, 20, "@isbn1 ");

cmd1.Parameters.Add( "@isbn1 ", SqlDbType.VarChar, 20)
就行了


你用的是2005的化 我看有的书上
直接用
cmd1.Parameters.Add( "isbn1 ", SqlDbType.VarChar, 20);
cmd1.Parameters[ "isbn1 "].Value = " ";