C# 强类型数据集的问题

C# 强类型数据集的问题,c#,database,visual-studio,dataset,C#,Database,Visual Studio,Dataset,我正在用C#制作一个时钟,用户创建用户名和密码,然后将信息保存到数据库中。嗯,每次我引用数据集时都会出现错误:“非静态字段、方法或属性'TimeClockProject.loginsDataSet.Logins.get'需要对象引用” 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dr

我正在用C#制作一个时钟,用户创建用户名和密码,然后将信息保存到数据库中。嗯,每次我引用数据集时都会出现错误:“非静态字段、方法或属性'TimeClockProject.loginsDataSet.Logins.get'需要对象引用”

代码如下:

   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);
    }

}
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.Security.Cryptography;
使用System.Data.Sql;
使用System.Data.SqlClient;
命名空间时钟项目
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
}
私有void AddUser(字符串用户名、字符串密码、字符串确认密码、字符串电子邮件)
{
//循环登录表
foreach(loginsDataSet.Logins中的DataRow行)
{
//并查找匹配的用户名
if(row.ItemArray[0].Equals(用户名))
{
//如果找到一个,则显示消息:
显示(“用户名已存在”);
返回;
}
}
//确认密码必须等于密码。
如果(密码!=confirmPass)
{
MessageBox.Show(“密码不匹配”);
}
//密码长度必须至少为8个字符
else if(password.Length<8)
{
MessageBox.Show(“密码长度必须至少为8个字符”);
}
//如果没有用户名
else if(用户名==null)
{
MessageBox.Show(“必须有用户名”);
}
//如果一切顺利,创建新用户!
其他的
{
loginsDataSet.LoginsRow newUserRow=loginsDataSet.Logins.NewLoginsRow();
字符串EncryptedPass=HashPass(密码);
newUserRow.Username=用户名;
newUserRow.Password=EncryptedPass;
loginsDataSet.Logins.Rows.Add(newUserRow);
registerUserName.Text=String.Empty;
registerPassword.Text=String.Empty;
registerConfirmPassword.Text=String.Empty;
MessageBox.Show(“感谢您的注册!”);
}
}
公共字符串HashPass(字符串密码)
{
SHA256 sha=新的SHA256CryptoServiceProvider();
//从文本字节计算哈希
ComputeHash(ascienceoding.ASCII.GetBytes(密码));
//计算后得到散列结果
字节[]结果=sha.Hash;
StringBuilder strBuilder=新StringBuilder();
for(int i=0;i
修复了问题,删除了类型化数据集

错误告诉您问题所在。。您实际在哪里声明数据集。。你能展示所有相关的代码吗?如果我已经在Visual Studio中创建了SQL数据库,我认为我不需要声明数据集。听起来你需要理解实例和静态之间的区别,以及Visual Studio如何了解SQL Databaser及其对象。。您需要理解这两者是不相关的。@MethodMan也是,这是我目前拥有的所有代码。然后您需要在类级别声明它,并为其提供公共或私有访问级别,例如private-DataSet logindaset=null;然后创建数据集的新实例。。另外,在哪里绑定数据集?最好将其声明为DataTable,否则从数据集访问DataTable时,需要通过这种方式获取其DataTable。。。使用谷歌,如果你需要找到工作的例子,它将是一个救命稻草