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

应用存储过程添加数据的有关问题,请高手帮忙看看

2012-01-06 
应用存储过程添加数据的问题,请高手帮忙看看~CS文件如下:SqlConnectionSqlConstrSQL.GetConnection()Sql

应用存储过程添加数据的问题,请高手帮忙看看~
CS文件如下:
                SqlConnection   SqlCon   =   strSQL.GetConnection();
                SqlCon.Open();
                SqlCommand   cmd   =   new   SqlCommand( "reg_user ",   SqlCon);
                cmd.CommandType   =   CommandType.StoredProcedure;
                SqlParameter[]   prams   ={
                new   SqlParameter( "@uid ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@pwd ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@mcode ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@cname ",SqlDbType.NVarChar,100),
                new   SqlParameter( "@addr ",SqlDbType.NVarChar,100),
                new   SqlParameter( "@lxr ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@zip ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@tel ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@mobile_no ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@fax ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@email ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@curl ",SqlDbType.NVarChar,50),
                new   SqlParameter( "@qq ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@loginIP ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@loginsys ",SqlDbType.NVarChar,20),
                new   SqlParameter( "@Browser ",SqlDbType.NVarChar,20)
                };
                prams[0].Value=uid;
                prams[1].Value=pwd;
                prams[2].Value=mcode;
                prams[3].Value=cname;
                prams[4].Value=addr;
                prams[5].Value=lxr;
                prams[6].Value=zip;
                prams[7].Value=tel;
                prams[8].Value=mobile_no;
                prams[9].Value=fax;
                prams[10].Value=email;
                prams[11].Value=curl;
                prams[12].Value=qq;


                prams[13].Value=loginIP;
                prams[14].Value=loginsys;
                prams[15].Value   =   Browser;
                //添加参数
                foreach   (SqlParameter   parameter   in   prams)
                {
                        cmd.Parameters.Add(parameter);
                }
                cmd.ExecuteNonQuery();
                SqlCon.Close();

存储过程如下:

ALTER   PROCEDURE   [dbo].[reg_user]  
(--Coding   By   Flyso
--会员表
@uid   nvarchar(50),   --用户名
@pwd   nvarchar(50),   --密码
@mcode   nvarchar(50),   --明码
@cname   nvarchar(100),   --公司名称
@addr   nvarchar(100),   --地址
@lxr   nvarchar(50),   --联系人
@zip   nvarchar(20),   --邮编
@tel   nvarchar(50),   --电话
@mobile_no   nvarchar(20),   --手机
@fax   nvarchar(20),   --传真
@email   nvarchar(20),   --邮箱
@curl   nvarchar(50),   --网址
@qq   nvarchar(20),   --QQ
@loginIP   nvarchar(20),   --登录IP
@loginsys   nvarchar(20),   --操作系统
@Browser   nvarchar(20)   --浏览器
)
AS
BEGIN
--   SET   NOCOUNT   ON   added   to   prevent   extra   result   sets   from
--   interfering   with   SELECT   statements.
SET   NOCOUNT   ON;
DECLARE   @strSQL   nvarchar(1000)
SET   @strSQL= 'INSERT   INTO   user '
SET   @strSQL=@strSQL+ '(uid,pwd,mcode,cname,addr,lxr,zip,tel,mobile_no,fax,email,curl,qq,loginIP,loginsys,Browser)VALUES '
SET   @strSQL=@strSQL+ '(@uid,@pwd,@mcode,@cname,@addr,@lxr,@zip,@tel,@mobile_no,@fax,@email,@curl,@qq,@loginIP,@loginsys,@Browser) '
EXEC(@strSQL)
print(@strSQL)
END


----------------------------------------
错误如下:

必须声明标量变量   "@uid "。


这是什么问题,uid变量是有值的,是不是变量传递到存储过程中出现了问题...

[解决办法]
你的存储过程在查询分析器执行的了吗?
'(@uid,@pwd,@mcode,@cname,@addr,@lxr,@zip,@tel,@mobile_no,@fax,@email,@curl,@qq,@loginIP,@loginsys,@Browser) '
用动态SQL这就要
'( ' + @uid + ', ' +...........
[解决办法]
DECLARE @strSQL nvarchar(1000)
SET @strSQL= 'INSERT INTO user '
SET @strSQL=@strSQL+ '(uid,pwd,mcode,cname,addr,lxr,zip,tel,mobile_no,fax,email,curl,qq,loginIP,loginsys,Browser)VALUES '
SET @strSQL=@strSQL+ '(@uid,@pwd,@mcode,@cname,@addr,@lxr,@zip,@tel,@mobile_no,@fax,@email,@curl,@qq,@loginIP,@loginsys,@Browser) '
EXEC(@strSQL)
print(@strSQL)
END
============================
没必要这么拼
直接 insert table() values() 就可以
SQL 语句换行没关系!
[解决办法]
用这种方法吧
SqlCommand com = new SqlCommand( "d_fabric_insert ", Con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add( "@code ", SqlDbType.Char ,2).Value =Convert.ToString(codesl);


com.Parameters.Add( "@order_no ", SqlDbType.Char,9).Value=order;
com.ExecuteNonQuery();

热点排行