当我运行它时,错误是什么,它给了我这个错误
字符串或二进制数据将被截断。 声明已经终止。
使用我从下拉列表中获取的ID进行更新。
代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string constr = "Data Source=YAZAN-PC ; initial Catalog=Elder ; user = sa ; pwd =****;";
SqlConnection con = new SqlConnection(constr);
string sql = "Select * from Users;";
con.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
DataRow dr = dt.NewRow();
dr["ID"] = "0";
dt.Rows.InsertAt(dr, 0);
ddlID.DataSource = dt;
ddlID.DataValueField = "ID";
ddlID.DataBind();
}
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
string constr = "Data Source = YAZAN-PC ;" +
"initial catalog = Elder;" +
"user = sa ; pwd = ****;";
SqlConnection con = new SqlConnection(constr);
string Sql =
"Update Users Set Name=@Name , Gender=@Gender , Email=@Email ,UserType=@UserType, BirthDate=@BirthDate , Password=@Password, RePassword=@RePassword where ID=@ID;";
con.Open();
SqlCommand cmd = new SqlCommand(Sql, con);
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Gender", rblGender.SelectedValue);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@UserType", rblUserType.SelectedValue);
cmd.Parameters.AddWithValue("@BirthDate", txtBirthDate.Text);
cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
cmd.Parameters.AddWithValue("@RePassword", txtRePassword.Text);
cmd.ExecuteNonQuery();
con.Close();
}
这是SQL Server中的表结构:
ID int not null primary key identity,
Name nvarchar(50) not null ,
Gender Char(1) not null ,
Email nvarchar(50) not null ,
UserType char(1) not null ,
BirthDate date not null ,
Password nvarchar(50) not null ,
RePassword nvarchar(50) not null
答案 0 :(得分:1)
在将字符串传递给SQL之前,需要检查字符串的长度。如果列的给定值超过指定的长度,则该语句将失败。
例如,Name
被定义为VARCHAR(50)
,因此@Name
中的字符串必须小于或等于50个字符。 51或更多将导致声明失败。
简单的if
语句将执行此操作,例如:
if (txtName.Text.Length > 50)
{
// throw an error, truncate the string, etc.
}
同样,您需要检查每个字符串,使其长度小于或等于DB列中的长度。
建议在客户端检查输入的长度(通过JavaScript或其他方法) - 这样您就可以向用户提供即时反馈,他们可以在提交信息之前对其进行更正。