2009-06-12 4 views
2

次の例外をスローするコードの下部分..SqlCommandオブジェクト、C#の発行

エラーメッセージ:

オブジェクト参照がないオブジェクトの インスタンスに設定します。スタックトレース: System.Data.SqlClient.SqlCommand.ExecuteNonQuery()


System.Data.SqlClient.SqlCommand.ExecuteReaderで(CommandBehaviorの cmdBehavior、RunBehavior runBehavior、 ブールreturnStream)私は失われていますその理由は..

sqlcon = new SqlConnection(strSqlconnection); 

SqlCommand sqlcomSMCheckin = new SqlCommand("prc_CheckIn", sqlcon); 

sqlcomSMCheckin.CommandType = CommandType.StoredProcedure; 

sqlcomSMCheckin.Parameters.Add("@Description", SqlDbType.VarChar).Value = "My App"; 

sqlcomSMCheckin.CommandTimeout = this.iCommandTimeOut; 

if (sqlcon.State == ConnectionState.Closed) 
{ 
    sqlcon.Open(); 
} 

if (sqlcomSMCheckin != null) 
{ 
    sqlcomSMCheckin.ExecuteNonQuery(); // error here 
    sqlcomSMCheckin.Dispose(); 
} 
+0

あなたは正しいデータベースに接続していることを100%確信していますか?あなたの接続文字列はどうですか?あなたは "dbo.prc_CheckIn"を指定しようとしましたか? –

+0

ええ、spは20秒ごとに実行されていますが、私はこのエラーは他の時間には発生しません。 –

+0

それから、「他の時代」以来何が変わったのですか? –

答えて

0

sqlConはクラスレベルの変数ですか、同じメソッドを複数回呼び出す際に問題がありますか?クラスに静的なものはありますか?複数のスレッドを使用していますか?

+0

これはそれでした。間違いなく助けを借りてそれを包んだが、ダム私は非常に明白な何かを逃した。ありがとうckそれを指摘しています..すべての週末のプロセスを実行してエラーを取得していない。 –

0

sproc "prc_CheckIn"が接続先のSQL Serverに存在することを確認してください。接続のスペルが間違っているか、ユーザーからアクセスできない可能性があります。

+0

prc_ChecInが存在します。このコードは、時々私はこのエラー –

1

ここで何が起こっているのかわからないですが、このコードスニペットを試すことはできますか?

using(sqlcon = new SqlConnection(strSqlconnection)) 
{ 
    using(SqlCommand sqlcomSMCheckin = new SqlCommand("dbo.prc_CheckIn", sqlcon)) 
    { 
     sqlcomSMCheckin.CommandType = CommandType.StoredProcedure; 

     sqlcomSMCheckin.Parameters.Add("@Description", SqlDbType.VarChar, 50) 
      .Value = "My App"; 

     sqlcomSMCheckin.CommandTimeout = this.iCommandTimeOut; 

     sqlcon.Open(); 
     sqlcomSMCheckin.ExecuteNonQuery(); 
     sqlcon.Close(); 
    } 
} 

は、私が「dbo.prc_CheckIn」と「prc_CheckIn」を置き換える、私は(必要に応じて調整)、{}ブロックを使用して、すべてを包んVARCHARパラメータの最大長を指定する - それはそれについてです。

あなたはまだ同じエラーが発生しますか?

マルク・

+0

うんざりを除いて問題なしで正常に動作します。上記のすべての変更を加え、まだエラーが発生しています。 spのデータベース資格を追加しました。だから今はabc.dbo.prc_CheckInです。コードは20秒ごとに実行され、数分間は正常に動作し、突然私はこれを取得します。このコードのメソッドは複数のスレッドで使用されていることに言及する必要があります。 –

0

あなたは常にが、これは機能の一部ではない場合は、新しいとそれを復活さは必要ありませんすぐにSqlCommandオブジェクト

を実行した後、あなたのSQLConnectionを閉じる必要があります - ちょうどそれは十分だろう開きます。

+0

接続がすぐに終了した後、コードスニペットにはそれが含まれています。 –

1

HI

コードは(私が以前answrerであなたに示されたように、あなたが使用して句を使用することをお勧めします)OKらしいです。私は問題がストアドプロシージャ内でないのだろうかと思います。デバッグしようとするか、ストアドプロシージャの最初と最後にログ記録を追加して、毎回OKを終了するようにしてください。

+0

これは良い考えです。表示されるエラーは、報告されるポイントまで泡が出た深刻なエラーの結果であることを覚えておいてください。この場合、コードは通常動作するので、外部(データベース)の影響を調べる必要があります。 –

0

接続プーリングまたは複数のアクティブな結果セットを無効にしましたか?私はそのための接続文字列オプションを忘れていますが、接続文字列ビルダーを呼び出す場合、それは高度なプロパティグリッド上にあるはずです。またはwww.connectionstrings.comで。

また、これは、SQL Expressを使用してVisual Studioプロジェクトに.mdfファイルを追加する場合のような「ユーザーインスタンス」データベースですか?

関連する問題