2016-08-02 14 views
0

私が行っており、更新操作エラーSystem.Data.SqlClient.SqlExceptionエラーを取り除く方法?

「『System.Data.SqlClient.SqlException』のSystem.Data.dllで発生したが、ユーザーコードで処理されなかった種類の例外」

は、このエラーはcmd.ExecuteNonQuery(INSERTクエリ下の行)

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

あなたのコードのために、このアプローチを使用することをお勧めSQLインジェクション攻撃のために開いています。 [SqlParameter](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v = vs.110).aspx)を使用することをお勧めします。 – Satpal

+0

例外は、作成しているSQLに何らかのエラーがあります。コマンドを作成した後に 'cmd'の' CommandText'とは何ですか? – bassfader

+0

正確な複製はありませんが、http://stackoverflow.com/q/35163361/87698をご覧ください。副作用として、元の問題を解決する可能性もあります。オリジナルの問題について:あなたの例外には*例外メッセージ*もあります。それを探して質問に追加してください。 – Heinzi

答えて

0

に発生しているさて、あなたのコードに多少の誤差があり、uでそのExceptionをキャッチすることができますか?どのように私はこれを削除することができ、発生しましたtry{} catch{}を歌ってください。私はusingステートメントを使用することを提案しています。あなたはSqlParameterすなわち@rを使用していて、それのために価値を提供していないInsertクエリの両方で

ERROR

。だからそれは明らかにスローされます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; 
    } 

}

私はあなたが両方InsertUpdate

+0

私はこのコードを試しましたが、query.alwaysがcatchブロックに来るのを実行しません。これを解決するには? –

+0

例外メッセージは何を表していますか? – jonju

+0

キャッチブロックで印刷するメッセージはどうすれば解決できますか?何も例外なくクエリを実行したい –

関連する問題