2016-03-31 10 views
-1

私はユーザーがユーザー名とパスワードを作成して情報をデータベースに保存するC#でTimeClockを作成しています。厳密に型指定されたデータセットの問題

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Windows.Forms; 
    using System.Security.Cryptography; 
    using System.Data.Sql; 
    using System.Data.SqlClient; 


    namespace TimeClockProject 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void AddUser(string username, string password, string confirmPass, string email) 
    { 
     //Loop through Logins Table 
     foreach (DataRow row in loginsDataSet.Logins) 
     { 
      //And look for matching usernames 
      if (row.ItemArray[0].Equals(username)) 
      { 
       //If one is found, show message: 
       MessageBox.Show("Username already exists"); 
       return; 
      } 
     } 

     //Confirm pass must equal password. 
     if (password != confirmPass) 
     { 
      MessageBox.Show("Passwords do not match"); 
     } 
     //Password must be at least 8 characters long 
     else if (password.Length < 8) 
     { 
      MessageBox.Show("Password must be at least 8 characters long"); 
     } 

     //If there is no username 
     else if (username == null) 
     { 
      MessageBox.Show("Must have Username"); 
     } 
     //If all is well, create the new user! 
     else 
     { 
      loginsDataSet.LoginsRow newUserRow = loginsDataSet.Logins.NewLoginsRow(); 

      string EncryptedPass = HashPass(password); 
      newUserRow.Username = username; 
      newUserRow.Password = EncryptedPass; 

      loginsDataSet.Logins.Rows.Add(newUserRow); 
      registerUserName.Text = String.Empty; 
      registerPassword.Text = String.Empty; 
      registerConfirmPassword.Text = String.Empty; 
      MessageBox.Show("Thank you for Registering!"); 
     } 
    } 

    public string HashPass(string password) 
    { 
     SHA256 sha = new SHA256CryptoServiceProvider(); 

     //compute hash from the bytes of text 
     sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password)); 

     //get hash result after compute it 
     byte[] result = sha.Hash; 

     StringBuilder strBuilder = new StringBuilder(); 
     for (int i = 0; i < result.Length; i++) 
     { 
      //change it into 2 hexadecimal digits 
      //for each byte 
      strBuilder.Append(result[i].ToString("x2")); 
     } 

     return strBuilder.ToString(); 
    } 

    private void registerButton_Click(object sender, EventArgs e) 
    { 
     AddUser(registerUserName.Text, registerPassword.Text, registerConfirmPassword.Text, registerEmail.Text); 
    } 

} 
} 
:まあ、私はDataSetを参照するたび、私はエラーを取得する:「『TimeClockProject.loginsDataSet.Logins.Get』オブジェクト参照が非静的フィールド、メソッド、またはプロパティのために必要とされる」ここで

コードです
+0

エラーが問題の内容を伝えています..実際にデータセットをどこで宣言しますか?すべての関連するコードを表示できますか? – MethodMan

+0

Visual Studioで既にSQLデータベースを作成していた場合、DataSetを宣言する必要はないと思いました。 – Probable

+0

インスタンスと静的の違いを理解する必要があるようにも聞こえますが、Visual StudioはSql Databaserとそのオブジェクトについて何を知っていますか?2つは関連していないことを理解する必要があります.. – MethodMan

答えて

0

型付きのデータセットで問題が解決しました

関連する問題