2016-08-02 3 views
0

Когда я совершаю операции обновления, то ошибкаКак удалить ошибку System.Data.SqlClient.SqlException?

«Исключение типа„System.Data.SqlClient.SqlException“произошло в System.Data.dll, но не был обработан в пользовательском коде»

произошло, как я могу удалить это? эта ошибка произошла на cmd.ExecuteNonQuery (строка ниже запрос на вставку)

protected void Button2_Click(object sender, EventArgs e) 
{ 
     SqlConnection con = new SqlConnection() ; 
     con.ConnectionString = @"Data Source=ADMIN\LOCALHOST;Initial Catalog=maha;Integrated Security=True;"; 

       con.Open(); 

       SqlCommand cmd = new SqlCommand("Insert into [dbo].[student]([ID],[NAME],[DOB],[GENDER]) Values ('" + TB1.Text + "','" + TB2.Text + "','" + TB3.Text + "','" + @rm + "')", con); 

       cmd.ExecuteNonQuery(); 
       con.Close(); 
} 
protected void Button3_Click(object sender, EventArgs e) 
{ 
     SqlConnection con = new SqlConnection(); 
     con.ConnectionString = @"Data Source=ADMIN\LOCALHOST;Initial Catalog=maha;Integrated Security=True;"; 
     con.Open(); 

     SqlCommand cmd = new SqlCommand("Update [dbo].[student] set [ID]='" + TB1.Text + "',[NAME]='" + TB2.Text + "',[DOB]='" + TB3.Text + "',[GENDER]='" + @rm + "' where [ID]=='" + TB1.Text + "'", con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
} 
+2

You код открыт для SQL Injection атаки. Я бы рекомендовал вам начать использовать [SqlParameter] (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter (v = vs.110) .aspx) – Satpal

+0

Исключение может указывать на то, что есть некоторая ошибка в SQL, который вы создаете. Что такое 'CommandText'' cmd' после создания команды? – bassfader

+0

Не точный дубликат, но, пожалуйста, посмотрите http://stackoverflow.com/q/35163361/87698. Как побочный эффект, он также может исправить вашу оригинальную проблему. О вашей оригинальной проблеме: в вашем исключении также есть сообщение * exception *. Найдите его и добавьте в свой вопрос. – Heinzi

ответ

0

Ну у вас есть какие-то ошибки в коде, и вы можете поймать, что Exception через и sing try{} catch{}. Кроме того, я бы предложил использовать заявление using.

ОШИБКА

В обоих Insert запросе вы используете SqlParameter@r и то есть вы не предоставляют значения для него. Таким образом, он будет явно бросать и Exception, == в Update запрос также является ошибкой. Он не существует в SqlServer.

Теперь попробуйте этот код:

protected void Button3_Click(object sender, EventArgs e){ 
    try{ 
     string constr = @"Data Source=ADMIN\LOCALHOST;Initial Catalog=maha;"+ 
        "Integrated Security=True;"; 
     using(SqlConnection con = new SqlConnection(constr)){   
      if(con.State==ConnectionState.Closed){ 
       con.Open(); 
      } 
      string query= "Update [dbo].[student] set [ID][email protected],[NAME][email protected], [DOB][email protected],"+ 
         "[GENDER][email protected] Where [ID][email protected]"; 
      using(SqlCommand cmd = new SqlCommand(query, con)){ 
       cmd.CommandType=CommandType.Text; 
       cmd.Parameters.AddWithValue("@id",TB1.Text); 
       cmd.Parameters.AddWithValue("@name",TB2.Text); 
       cmd.Parameters.AddWithValue("@dob",TB3.Text); 
       cmd.Parameters.AddWithValue("@rm",rmvalue); //i don't know it's value 
       cmd.ExecuteNonQuery(); 
       //success message here  
      } 
     } 
    }catch(Exception ex){ 
      //print your error message here e.g errLabel.Text=ex.Message; 
    } 

}

Я предлагаю вам использовать этот подход для обоих Insert и Update

+0

Я пробовал этот код, но он не выполняет query.always приходит, чтобы поймать блок. как это решить? –

+0

А что такое сообщение об исключении? – jonju

+0

Сообщение, которое я печатаю в блоке catch, как я могу это решить? Я хочу выполнить запрос без каких-либо исключений –

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