-1

5行目で「NullReferenceException was unhandled.Object reference not set to an instance of an object」というエラーが表示され続けます

1.    Private void textbox1_TextChanged(object sender,EventArgs e)
2     {
3.       SqlConnection cn=new SqlConnection("Connection string");
4.       String sql ="select name from bank_info where account_no ='"+textbox1.Text+"'";
5.       SqlCommand cmd =new SqlCommand(sql,cn);
6.       Cn.Open();
7.       String s1 = cmd.ExecuteScalar().ToString();
8.       TextBox2.Text =s1.ToString();

プログラミング初心者です。よろしくお願いします。

4

3 に答える 3

1

次のようなことを試してください。接続は通常、接続から作成する必要があります。Using ステートメントは、IDisposable を実装するクラスで Dispose が呼び出されるようにするための良い方法です。SqlParameters を使用して、SQL インジェクションの問題を回避します。

using(SqlConnection cn=new SqlConnection("Connection string"))
{
   cn.Open();

   String sql ="select name from bank_info where account_no = @accNo"; // '"+textbox1.Text+"'";

   using (SqlCommand cmd = cn.CreateCommand())
   {
       cmd.CommandText = sql;
       SqlParameter param = cmd.CreateParameter();
       param.ParameterName = "@accNo";
       param.Value = textbox1.Text;
       cmd.Parameters.Add(param);
       object obj = cmd.ExecuteScalar();
       TextBox2.Text = obj != null ? obj.ToString() : string.Empty;
   }

}
于 2012-09-14T16:20:03.460 に答える
0

これは役に立ちます

 Private void textbox1_TextChanged(object sender,EventArgs e)
 {
   SqlConnection cn=new SqlConnection("Connection string");
   String sql ="select name from bank_info where account_no ='"+textbox1.Text+"'";
   SqlCommand cmd =new SqlCommand(sql,cn);
   Cn.Open();
   Object obj = cmd.ExecuteScalar()
   String s1 = (obj!=null)?(String)obj:"";
   TextBox2.Text =s1.ToString();
于 2012-09-14T16:34:45.223 に答える
-1

デバッグ モードでクエリを表示し、SQL を表示できますか。SQLで同じクエリを実行して、そのアカウント番号が結果を返していることを確認してください。例外を回避する結果がない場合は、例外をスローしない DB Null をチェックできます。

于 2012-09-14T16:38:51.100 に答える