私はmysqlデータリーダーを返すメソッドを作成しました。aspネットコア - NullReferenceException:メソッドからmysqlデータリーダーを返す方法?
public class DbHelper : BaseService
{
public DbHelper(string connectionString) : base(connectionString)
{ }
public static MySqlDataReader GetDataReader(string query)
{
using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
connection.Open();
using (MySqlCommand command = new MySqlCommand(query, connection))
{
MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
}
}
}
と、次は私が書いた:
var query = ""; //here my query string
var rdr = DbHelper.GetDataReader(query);
while (rdr.Read())
{
}
が、私はreturn reader;
_connectionString
とquery
が正しくに付加価値化され、この行にnull参照の例外が発生します。
どうすれば修正できますか?何が間違っているのですか?
リーダーが使用している基本接続が閉じている場合、リーダーは使用できません。このアプローチは動作しません。 – Steve
@Steveあなたは 'MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);'行が正しくないのですか? 'CommandBehavior.Default'を使用しても、それは動作しません... – FabioBit
_"この行にヌル参照例外があります。 "return reader;' "_ - これは不可能です。 'return'文は式の値を返します。この場合は' reader'です。 'reader'が' null'の場合、 'null'値が返されます。それは例外をスローするつもりはない。私はあなたが返す前にあなたのオブジェクトを処分することができないことを説明するコメントに同意し、それが動作することを期待しています。しかし、あなたの質問は、最初に妥当なエラーシナリオを説明するものではありません。 'NullReferenceException'が本当にあなたが求めているものであれば、マークされた重複を見てください。それ以外の場合は、質問を修正してください –