-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』オブジェクト参照が非静的フィールド、メソッド、またはプロパティのために必要とされる」ここで
コードです
エラーが問題の内容を伝えています..実際にデータセットをどこで宣言しますか?すべての関連するコードを表示できますか? – MethodMan
Visual Studioで既にSQLデータベースを作成していた場合、DataSetを宣言する必要はないと思いました。 – Probable
インスタンスと静的の違いを理解する必要があるようにも聞こえますが、Visual StudioはSql Databaserとそのオブジェクトについて何を知っていますか?2つは関連していないことを理解する必要があります.. – MethodMan