私は常に「壊れていない場合は修正しないでください」のファンでしたが、私のコードは機能していますが、接続文字列プロパティが初期化されていないというメッセージをスローしています。同様の投稿は、接続文字列がnullであることを示唆しています---したがってif IsNullOrEmpty
、接続を開くコマンドの周りに追加しました。これは例外をスローする行です。注: 私の接続文字列は、接続文字列のデータベースから取得されました。これは、.aspx ページの C# コード ビハインド ファイルです。例外の原因に関する提案を事前にありがとうございます。
コード:
using (SqlConnection sconn = new SqlConnection(someconnectionstring.Value.ToString()))
{
using (SqlCommand scmd = new SqlCommand("mydb.[dbo].[myStoredProc]", sconn))
{
scmd.CommandType = CommandType.StoredProcedure;
scmd.Parameters.Add("@valueX", SqlDbType.VarChar).Value = 2;
scmd.Parameters.Add("@returnValue", SqlDbType.Int);
scmd.Parameters["@returnValue"].Direction = ParameterDirection.Output;
//testing for null as suggested...
if (!string.IsNullOrEmpty(sconn.ToString()) || sconn.ToString() != "") //the || != "" may be double work.. not sure
{
sconn.Open(); //code throw exception here but continues to work.
SqlDataReader adar = scmd.ExecuteReader();
if (adar.HasRows)
{
while (adar.Read())
{
hiddenfieldX.Value = adar["valueX"].ToString();
...
}
sconn.Close();
}
}
}
}
}
catch (SqlException er)
{
//The ConnectionString property has not been initialized thrown here
}