解決方法 : SelectCommand.Connection プロパティが初期化されていません。
私はクラスを持っていて、そこにすべてのメソッドを書きました。 そして、私はそこにいくつかのコードを持っているWebアプリケーションの私の最初のページを持っています。 私はこれに直面する
- $exception {"Fill: SelectCommand.Connection property has not been initialized."} System.Exception {System.InvalidOperationException}が発生しました。
という行があります。
sda.Fill(dsUsers.tblMembers);
これが私のコードです。
namespace MosquesNetwork
{
public class cUsers2
{
SqlConnection scn;
SqlDataAdapter sda;
SqlCommandBuilder scb;
SqlCommand SqlStr;
public cUsers2()
{
SqlConnection scn = new SqlConnection (ConfigurationManager.ConnectionStrings["MosquesDBConnectionString"].ConnectionString);
sda = new SqlDataAdapter();
scb = new SqlCommandBuilder(sda);
}
public bool CheckUserName(string UserName)
{
DsUsers2 dsUsers=new DsUsers2();
bool Success;
string SqlStr="select * from tblUsers where Username='"+UserName+"' ";
sda.SelectCommand=new SqlCommand(SqlStr, scn);
sda.Fill(dsUsers.tblMembers);
sda.Fill(dsUsers.tblMembers);
Success=dsUsers.tblMembers.Rows.Count>0;
return Success;
}
それから、私はログインボタンがWebformで押されている間、このコードを持っています。
protected void Button1_Click(object sender, EventArgs e)
{
if (txtuser.Text.Trim().Length>0 && txtpass.Value.Length>0 )
{
cUsers2 cUsers=new cUsers2();
DsUsers2 dsUser=new DsUsers2();
bool Success;
if (txtuser.Text.Trim()=="admin")
{
Success=cUsers.CheckAdminPass(txtuser.Text.Trim(),txtpass.Value.Trim());
if (Success)
{
Response.Redirect("WebForm2.aspx");
}
}
dsUser=cUsers.Checkpassword(txtuser.Text.Trim(), txtpass.Value.Trim(),out Success);
if(Success)
{
Session["ID"]=dsUser.tblMembers.Rows[0][dsUser.tblMembers.IDUserColumn].ToString();
System.Web.HttpContext.Current.Response.Redirect("frmProfile.aspx");
}
else lblerror.Text="invalid username & password";
}
}
1
3
コンストラクタを見てください。
これはローカル変数
scn
を 分離して 宣言しているので、scn
インスタンス 変数は null のままになっています。もし、これをに変更すれば、当面の問題は解決するかもしれません。私としては、
SqlConnection
を実際に必要とするusing
ブロックで作成する方が良いと思いますが、今のところうまくいっていません。私はまた、この問題を得た。問題を検索した後、私はSqlDataAdapterを提供している接続のオブジェクトが初期化されていないことが判明したので、接続はnullとして渡されます。