2015-04-25 7 views
0

Что ошибку на этом, когда я запускаю его, это дает мне эту ошибкуОбновление SQL Server из ASP.NET

Строка или двоичные данные будут усечены. Заявление было прекращено.

Это обновление с использованием идентификатора, который я беру из раскрывающегося списка.

Код:

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 [email protected] , [email protected] , [email protected] ,[email protected], [email protected] , [email protected], [email protected] where [email protected];"; 
    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

Это означает, что вы пытаетесь поместить больше данных в столбец, чем это займет (то есть, скажем, это VARCHAR (50), а длина данных - 100. Кстати, скажите, пожалуйста, что вы сделали ** не * * введите пароль для своей учетной записи sa в свой вопрос .... – Tim

+0

Я добавляю код в sql, вы можете увидеть его plz @Tim –

+2

Не используйте учетную запись sa на производственных серверах. Установите суперкомплексный/длинный пароль на эта учетная запись, сделайте альтернативные учетные записи для вашего приложения и администраторов, а затем заблокируйте пароль sa в сейфе и забудьте об этом. –

ответ

1

Вы должны проверить длину ваших строк, прежде чем передать их в SQL. Если заданное значение для столбца превышает указанную длину, утверждение не будет выполнено.

Например, Name определен как VARCHAR(50), поэтому ваша строка в @Name должна быть не более 50 символов. 51 или более приведет к сбою инструкции.

Простой if заявление будет делать это, например .:

if (txtName.Text.Length > 50) 
{ 
    // throw an error, truncate the string, etc. 
} 

Опять же, вы должны будете проверить каждую строку, так что длина меньше или равна длине в колонке DB.

Было бы также желательно проверить длину ввода на стороне клиента (с помощью JavaScript или других методов) - таким образом вы можете немедленно предоставить пользователю обратную связь, и они могут исправить ее, прежде чем отправлять информацию.

+0

Я попробую это сейчас, но я попробую, и данные будут не больше длины, и все равно дал мне эту ошибку Я вижу видео на YouTube все из них, используя txtBox, и передал идентификатор, а затем конвертировал его –

+0

. Положите точку останова и нажмите F5 и введите в нее r код. Вы должны убедиться, что каждая часть данных поместится в соответствующем столбце (пример приведенного в моем ответе - только пример). Кроме того, вы передаете sting in для 'Date', который определяется как столбец' DATE' в таблице, поэтому неявное преобразование может также вызвать ошибку. – Tim

Смежные вопросы