无法使用存储过程将完整值插入数据库?

时间:2013-06-04 07:33:43

标签: c# sql stored-procedures

我很擅长在C#中使用存储过程。但是m无法将值完全插入数据库?

create procedure insertPro
     (@name as varchar,
      @lname as varchar,
      @phone as varchar)
as
    insert into std_info 
    values (@name, @lname, @phone)
go

这是我的C#代码

SqlConnection con = new SqlConnection("Data Source=xxxxxxxx;Integrated Security=SSPI;Initial Catalog=xxxxx");
        SqlCommand cmd = new SqlCommand("insertPro",con);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = textBox1.Text;
        cmd.Parameters.Add("@lname", SqlDbType.VarChar).Value = textBox2.Text;
        cmd.Parameters.Add("@phone", SqlDbType.VarChar).Value = textBox3.Text;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

这个插入数值到数据库但不完全是例如,如果我将第一个名称作为abc插入然后它只插入一个和相同的姓氏和电话?

3 个答案:

答案 0 :(得分:3)

在参数上加上一个长度:

create procedure insertPro(
@name as varchar(30),
@lname as varchar(30),
@phone as varchar(30)

答案 1 :(得分:1)

将存储过程更改为:

create procedure insertPro
(
   @name as varchar(max), //change (max) to maximum constraint length you set for each column
   @lname as varchar(max),
   @phone as varchar(max)
) 
as 

  insert into std_info values (@name,@lname,@phone)

答案 2 :(得分:1)

@name as varchar

因此使用简单的varchar而不指定任何长度。它只需要单个字符。这就是为什么你在桌子上只看到一个角色的原因。您只需要指定它们的长度等于列的长度。

  @name as varchar(100)