C# 强类型数据集的问题
我正在用C#制作一个时钟,用户创建用户名和密码,然后将信息保存到数据库中。嗯,每次我引用数据集时都会出现错误:“非静态字段、方法或属性'TimeClockProject.loginsDataSet.Logins.get'需要对象引用” 代码如下: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
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。。。使用谷歌,如果你需要找到工作的例子,它将是一个救命稻草