2012-01-10 11 views
0

私はアクセスデータベースとの接続を作成しているC#のfolowingコードを持って、いくつかの条件を使用しています。私はdbのwhere節を使用してデータベースから単一の行を呼び出します。データaccurately.Butは、私のコードは、私がDBからデータを照会していますベローアクセスDBを介してC#ループを介してループ#

protected void Page_Load(object sender, EventArgs e) 
{ 
    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|OID.mdb;Persist Security Info=False;"); 
    //OleDbConnection con = new OleDbConnection("Data Source=sml; User ID=sml; Password=sml; provider=OraOLEDB.Oracle"); 

    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandText = "Select * from EMAILS WHERE EMAIL= '" + GlobalData.Email + "'"; 
    //cmd.CommandText = "Select * from EMAILS"; 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = con; 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 

    String email = ds.Tables[0].Rows[0][1].ToString(); 

    if (email == GlobalData.Email) 
    { 
     Label2.Text = GlobalData.Email; 
     Label1.Text = GlobalData.Name; 
     Label3.Text = GlobalData.LastName; 
     Label1.Visible = false; 
     Label3.Visible = false; 
     Label4.Text = Label1.Text + ' ' + Label3.Text; 
    } 
} 

されている 私はそれがfolowingエラー

は「いいえ行は位置0ではありません」と表示ページを更新し、いくつかの時間後に取得しますグローバル変数とのクローズを使用して単一行を検索する

することができますどのようにすることができます私はこの問題を削除するか、私はループを使用してデータを取得し、ユーザーのログイン時に時間をevry DBをループすることができますか

答えて

1

つまり、したがって、あなたは、この行を呼び出すとき:

if (ds.Tables[0].Rows.Count>0) 
{ 
    String email = ds.Tables[0].Rows[0][1].ToString(); 
    ///... 
} 
:あなたのような何かをそのエラーを回避したい場合何 Row[0]

はありませんので、あなたは例外を取得

String email = ds.Tables[0].Rows[0][1].ToString(); 

あなたのコードにselect *を入れてはいけません。テーブルから選択したい列を正確に列挙します。例:

select email_address from Emails where id= 5 

追加コメント:上記のクエリは無意味です。 where句で同じ電子メールアドレスを使用するテーブルから電子メールアドレスを選択しようとしているようです。あなたは電子メールを既に知っている場合、なぜそれをデータベースから選択する必要がありますか?変数名(GlobalData.Email)で判断すると、これはあらかじめ定義された値であるようです...

+0

@AdeelAslam:私のコードはすでにどこに伝えられていますか。それを注意深く見てください。 – Icarus

+0

実際に私はopenidを使ってGoogleから認証を受けています。認証はGoogleからもう一度自分のDBから認証し、DBにメールがある場合はページが表示されます。別のページが表示されます –

+0

DBからシングルcoloumnを選択します。 –

関連する問題