[英]Update SQL Server from asp.net
當我運行它時,這是什么錯誤呢?
字符串或二進制數據將被截斷。 該語句已終止。
它是使用ID從下拉列表中獲取的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
您需要先檢查字符串的長度,然后再將其傳遞給SQL。 如果列的給定值超過指定的長度,則該語句將失敗。
例如, Name
定義為VARCHAR(50)
,因此@Name
的字符串必須小於或等於50個字符。 51或更多將導致語句失敗。
一個簡單的if
語句將執行此操作,例如:
if (txtName.Text.Length > 50)
{
// throw an error, truncate the string, etc.
}
同樣,您需要檢查每個字符串,以使長度小於或等於DB列中的長度。
還建議檢查客戶端輸入的長度(通過JavaScript或其他方法)-這樣,您可以立即向用戶提供反饋,並且他們可以在提交信息之前對其進行更正。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.