protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(str);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Companyregister";
cmd.Parameters.AddWithValue("@Company_name", txtname.Text);
cmd.Parameters.AddWithValue("@Register_no", txtreg_no.Text);
cmd.Parameters.AddWithValue("@Type", DropDownList1.Text);
cmd.Parameters.AddWithValue("@Address", txtadrs.Text);
cmd.Parameters.AddWithValue("@Email", txtemail.Text);
cmd.Parameters.AddWithValue("@Contact_no", txtphone.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Response.Write("Register succesful");
}
存储过程:
CREATE PROCEDURE [dbo].Companyregister
@Company_name varchar(50),
@Register_no varchar(50),
@Type varchar(50),
@Address varchar(50),
@Email varchar(50),
@Contact_no varchar(50)
AS
insert into company_reg (Company_name, Register_no, Type, Address, Email, Contact_no)
values (@Company_name, @Register_no, @Type, @Address, @Email, @Contact_no)
RETURN 0
错误:
System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理
附加信息:字符串或二进制数据将被截断。
答案 0 :(得分:1)
以下错误表示您的一个或多个数据字段无法放入数据库字段。例如,您的地址可能是60个字符,但您的数据库大小只有50个字符。
字符串或二进制数据将被截断。
要解决此问题,请首先检查您插入的数据是否符合数据库中定义的大小。要更容易地捕获它,请按如下方式将参数定义到存储过程:
cmd.Parameters.Add("@Company_name", SqlDbType.VarChar, 50).Value = txtname.Text;
cmd.Parameters.Add("@Register_no", SqlDbType.VarChar, 50).Value = txtreg_no.Text;
cmd.Parameters.Add("@Type", SqlDbType.VarChar, 50).Value = DropDownList1.Text;
cmd.Parameters.Add("@Address", SqlDbType.VarChar, 50).Value = txtadrs.Text;
cmd.Parameters.Add("@Email", SqlDbType.VarChar, 50).Value = txtemail.Text;
cmd.Parameters.Add("@Contact_no", SqlDbType.VarChar, 50).Value = txtphone.Text;
答案 1 :(得分:0)
开始调查异常的一个好方法是将代码包装在try/catch
块中。这将允许您深入了解异常,并希望获得更有意义的错误描述。提交例外作为您问题的一部分将有助于社区找到原因。
使用try/catch
块,如下所示
try{
// code goes here
}
catch (Exception e) // this block is only entered when an exception is thrown in the try block
{
Console.WriteLine(e.ToString()); // print the exception description to the Console (if console application)
}
根据评论中的建议,尝试使用相同的参数执行存储过程,看看它是否成功。
答案 2 :(得分:0)
试试这个,
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID", SqlDbType.Int).Direction = ParameterDirection.Output; /// this is optional if you declare @ID in your store procedure
cmd.Parameters.Add("@Company_name", SqlDbType.VarChar).Value = txtname.Text;
cmd.Parameters.Add("@Register_no", SqlDbType.VarChar).Value= txtreg_no.Text;
cmd.Parameters.Add("@Type", SqlDbType.VarChar).Value = DropDownList1.Text;
cmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = txtadrs.Text;
cmd.Parameters.Add("@Email", SqlDbType.VarChar).Value = txtemail.Text;
cmd.Parameters.Add("@Contact_no", SqlDbType.VarChar).Value = txtphone.Text;
并检查您的变量大小和名称