2017-01-07 5 views
1

私はデータベースに接続する食料品店アプリケーションを作っています。私はログインページマネージャのCashier1とCashier 2で3人のユーザーを持っています。データが既にデータベースに保存されているので、関連するユーザーのフォームを開きたいと思います。マネージャのマネージャとパスワードを入力すると、マネージャのページャにアクセスする必要があります。私がキャッシャー資格情報を入力すると、キャッシャーページが開かれるはずです。私のコードは以下のとおりです。データベースからデータを収集中にC#でログインページ別のフォームページを開くには

私はC#windowsフォームアプリケーションを使用しています。

データベースからパスワードフィールドのみを抽出し、それをtxtUser.textと比較することが可能な場合、その方法で動作するかしないか?

private void btnLogin_Click(object sender, EventArgs e) 
    { 
     SqlConnection con1 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True"); 
     string query= "select * from ManCash Where USERNAME='"+txtUser.Text+"'and PASS = '"+txtPass.Text+"'"; 

     SqlDataAdapter sda = new SqlDataAdapter(query, con1); 
     DataTable DT = new DataTable(); 
     sda.Fill(DT); 

     if (DT.Rows.Count>0&&DT.Rows.Count<=1) 
      { 
       this.Hide(); 
       Manager frm4 = new Manager(); 
       frm4.ShowDialog(); 
       this.Close(); 
      } 
     else if(DT.Rows.Count>1&&DT.Rows.Count<=2) 
      { 
       this.Hide(); 
       Cashier frm5 = new Cashier(); 
       frm5.ShowDialog(); 
       this.Close(); 
      } 
     else if (DT.Rows.Count==3) 
      { 
       this.Hide(); 
       Cashier frm5 = new Cashier(); 
       frm5.ShowDialog(); 
       this.Close(); 
      } 
+0

ManCashテーブルには、ログインごとに2つのロール "manager"と "Cashier"が用意されていませんか?この場合、データテーブルの選択された行から得られたRole値に単純なスイッチを使用します。 – Graffito

+0

私はこのタイプのコーディングの非常に基本的なレベルであり、MS SQLにとって非常に新しいです。ロールカラムについてはわかりません。 –

+0

「ログイン」と「パスワード」カラムのほかに、「ロール – Graffito

答えて

0

C#でコードする方法がわからないので、ここでアドバイスしたいと思います。

1)varcharが、それならばadminを置くとして、あなたがそれを作った場合、あなたのManCash表に新しい列を作成し、Role欄には「ロール」

2)という名前を付け、あなたがvarcharintとしてそれを行うことができますマネージャの場合は、staffを入力します。また、intの場合は、管理者には1、スタッフには0と入力します。

3)に似たクエリを作成し、以下:

(擬似コードで書かれた)

if datatable returns 1 from "Select role from ManCash where username = @username and password = @password" then proceed to next statement 

4)役割テーブルから値を取得し、その方法は、あなたがにページを分離しますこれはknowledで私は、あなたがデータベースを管理する方法を学習したい場合があり、開発者として、あなたは、データベース管理の基礎を読むことをお勧め)、この擬似コード

if query returned manager then manager page else staff page 

5のように示すことアプリケーションをより速く、より効率的に、安全にする方法を学びます。エラーがあるかどう

+0

ありがとうございました:) –

+0

ありがとう@AliHassan –

0

その後、switch文の中に入れて、各ユーザーの役割をするSELECT文の戻り値を読み取るためにSqlCommandオブジェクトとSqlDataReaderのを使用したいと思うでしょう。あなたがログインすると、自動的に特定の役割でそのユーザーと一致し、正確なフォームを開きます。

+0

コードで修正してもらえますか?私の最初の時間はSQLです。私はテーブルにロールを追加しましたが、今どのように使用するのですか? –

+0

@AliHassanここであなたの仕事を成し遂げるためのデベロッパーを期待しないでください。問題とその論理を理解してください。 .NET、ADO.NET、C#などの作業についてお読みください。論理を理解することが最も重要です。 –

+0

私はそれが非常に新しいので、構文についての論理についてはありません。 1回目はC#とSQLを使ってコーディングしています。構文については知識がありません –

0
private void btnLogin_Click(object sender, EventArgs e) 
{ 
    SqlConnection con1 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True"); 
    string query= "select * from ManCash Where USERNAME='"+txtUser.Text+"'and PASS = '"+txtPass.Text+"'"; 
SqlCommand cmd=new SqlCommand(); 
cmd.CommandText="query"; 
cmd.Connection=con1; 
con1.Open(); 
SqlDataReader reader=cmd.ExecuteReader(); 
Switch(reader["Role"].toString()){ 
case "Manager": 
//redirect to role form 
break; 
case "Cashier1": 
//redirect to role form 
break; 
case "Cashier2": 
//redirect to role form 
break; 
default: 
break; 
} 
con1.Close(); 

することは、私はちょうどそれがエラーなしで次のように働いている、それは:)

0

を成し遂げるために正確なロジックを与えているあなた自身でそれを修正しよう。しかし、すごく素早く対応してくれてありがとう。

SqlConnection con1 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True"); 

    private void btnLogin_Click(object sender, EventArgs e) 
    { 
     string query= "select * from ManCash Where USERNAME='"+txtUser.Text+"'and PASS = '"+txtPass.Text+"'"; 
     SqlDataAdapter sda = new SqlDataAdapter(query, con1); 

     DataTable DT = new DataTable(); 
     // SqlCommand command = new SqlCommand("SELECT Role from ManCash Where USERNAME='" + txtUser.Text + "'and PASS = '" + txtPass.Text + "'", con1); 
     // SqlDataReader readr = command.ExecuteReader(); 
     sda.Fill(DT); 

     string a = DT.Rows[0]["Role"].ToString(); 

     switch (a) 
     { 
      case "Admin": 
       this.Hide(); 
       Manager man = new Manager(); 
       man.ShowDialog(); 
       this.Close(); 
       break; 
      case "Staff": 
       this.Hide(); 
       Cashier ca = new Cashier(); 
       ca.ShowDialog(); 
       this.Close(); 
       break; 
     } 
    } 
関連する問題