私には気になる点があります。私は、IDataReader.Read()がIDbCommand.CommandTextの設定方法に応じて異なる動作をしていることに気付きました。IDataReader.Read()を使用した動作が一貫しない
'AID'が設定され、EntAgencyId()に渡された場合、reader.Read()はtrueを返し、プログラムはwhileループに入ることができます。私が関数( '455')に渡している同じ値を使用してEntAgencyId()で 'query'を設定した場合、プログラムはwhileループに入ることはできません(同じ動作は 'AID'を渡すときに起こります) textbox.text)。
public string EntAgencyId(string AID)
{
cmd = uasConnection.CreateCommand();
//query = "select * from EnterpriseAgencyTbl where AOCId = " + AID; //<--Works
query = "select * from EnterpriseAgencyTbl where AOCId = 455"; //<--Causes issue
cmd.CommandText = query;
reader = cmd.ExecuteReader();
while (reader.Read())
{
EntAgId = reader["Id"].ToString();
AgencyName = reader["Name"].ToString();
}
reader.Close();
return AgencyName;
}
デバッグ時には、 'query'は常に同じ値になりますが、なぜこれが.Read()と異なるのでしょうか。
思考のための食べ物 - .Read()は、さらに行がある場合はtrueを返します。それ以外の場合はfalseです。この場合、ItemプロパティとGetValue()を使用して最初の単一の行を読み取ろうとしましたが、両方とも 'オブジェクトのインスタンスに設定されていません'というエラーが発生します。
私は完全にアイデアを使い果たしているので、どんな助けもありがとう!
私はあなたの診断が間違っていると強く思っています。 1つのクエリ文字列が構築されていますが、どのようなものが構築されたかは何も気にしません。 (もちろん、SQLの一部としてテキストボックス値を使用してクエリを構築するべきではありません。パラメータ化されたSQLを代わりに使用してください) –
'EntAgencyId'を呼び出すコードを追加できますか? – phoog
好奇心から、AOCId列の種類は何ですか?そして、文字列 "'455'(目盛り付き)を関数に渡していますか? 「455」ですか? –