if(ID_TB.Text!="" && NAME_TB.Text!=""&& PING_TB.Text!=""&&QI_TB.Text!="" &&EXP_TB.Text!=""&&LAST_TB.Text!="")
{
int a1=Convert.ToInt32(PING_TB.Text);
int a2=Convert.ToInt32(QI_TB.Text);
int a3=Convert.ToInt32(EXP_TB.Text);
int a4=Convert.ToInt32(LAST_TB.Text);


string b=Form3.dep.ToString();
SqlCommand inst=new SqlCommand("insert_btn",con);
inst.CommandType=CommandType.StoredProcedure;         inst.Parameters.Add("@TableName",SqlDbType.VarChar);
         inst.Parameters["@TableName"].Value=b; inst.Parameters.Add("@ID",SqlDbType.VarChar);
inst.Parameters["@ID"].Value=ID_TB.Text; inst.Parameters.Add("@NAME",SqlDbType.VarChar);
inst.Parameters["@NAME"].Value=NAME_TB.Text; inst.Parameters.Add("@PING",SqlDbType.Int);
inst.Parameters["@PING"].Value=a1; inst.Parameters.Add("@QI",SqlDbType.Int);
inst.Parameters["@QI"].Value=a2; inst.Parameters.Add("@EXP",SqlDbType.Int);
inst.Parameters["@EXP"].Value=a3; inst.Parameters.Add("@LAST",SqlDbType.Int);
inst.Parameters["@LAST"].Value=a4; inst.Transaction=myTran;
inst.ExecuteNonQuery();
myTran.Commit();
MessageBox.Show("提交成功!","确定");
我的想法是通过TEXTBOX输入用户ID用户名和一些数。但我调用存储过程时没法插入。
提示如下错误:
{"将 varchar 值 'INSERT INTO bb (stu_id,stu_name,stu_ping,stu_qi,stu_exp,stu_last)  VALUES(2,33,' 转换为数据类型为 int 的列时发生语法错误。" }
我的存储过程为:
CREATE PROCEDURE dbo.insert_btn
@TableName AS VARCHAR(50),
@ID AS VARCHAR(50),
@NAME AS VARCHAR(50),
@PING AS INT,
@QI AS INT,
@EXP AS INT,
@LAST AS INTAS
BEGIN
DECLARE   
@sql                  NVARCHAR(4000)
SET @sql='INSERT INTO '+@TableName+' (stu_id,stu_name,stu_ping,stu_qi,stu_exp,stu_last)  VALUES('+@ID+','+@NAME+','+@PING+','+@QI+','+@EXP+','+@LAST+')'
EXEC (@sql)
END
GO
请问我如果PING想用int型不改变成VARCHAR。该怎么转化呢?

解决方案 »

  1.   

    CREATE PROCEDURE dbo.insert_btn
    @TableName AS VARCHAR(50),
    @ID AS VARCHAR(50),
    @NAME AS VARCHAR(50),
    @PING AS INT,
    @QI AS INT,
    @EXP AS INT,
    @LAST AS INTAS
    BEGIN
    DECLARE  @sql     NVARCHAR(4000)
    SET @sql='INSERT INTO '+@TableName+' (stu_id,stu_name,stu_ping,stu_qi,stu_exp,stu_last) 
    VALUES('+ '''' + @ID + ''',''' +@NAME + ''','
     + cast( @PING as varchar(10)) + ',' + cast( @QI as varchar(10)) + ',' + cast( @EXP as varchar(10)) + ',' + cast( @LAST as varchar(10)) + ')'print @sql
    EXEC (@sql)END
    GO