关于注册用户的C#类的问题 [英] Question regarding C# classes to register a user
问题描述
Hi, I am new learning C# and trying to create sql server database. For that I have created a User class and Database class. My problem is if I try to signup a new user, database does not get any data. Can anyone please help me figure out what I am missing.
Here is the code
**User Class**
public class UserDB
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Gender { get; set; }
public string PhoneNo { get; set; }
public string Email { get; set; }
public string DateofBirth { get; set; }
}
**Database Class**
{
public class Database : UserDB
{
public SqlConnection conn;
public SqlCommand Cmd;
public SqlDataReader dr;
private DataTable dt;
public Database()
{
conn = new SqlConnection(@"Data Source=DESKTOP;Initial Catalog=Login_DB;Integrated Security=True");
}
public int Register(UserDB user)
{
int code = 1;
try
{
using (SqlCommand command = new SqlCommand(
"INSERT INTO UserDB(Name, Password, Gender, Phone, Email, DOB) VALUES(username, password, gender, phoneno, email, dateofbirth, )", conn))
{
command.Parameters.Add(new SqlParameter("UserName", UserName));
command.Parameters.Add(new SqlParameter("Password", Password));
command.Parameters.Add(new SqlParameter("Gender", Gender));
command.Parameters.Add(new SqlParameter("PhoneNo", PhoneNo));
command.Parameters.Add(new SqlParameter("Email", Email));
command.Parameters.Add(new SqlParameter("DateofBirth", DateofBirth));
command.ExecuteNonQuery();
}
}
catch (SqlException ex)
{
code = -1;
}
return code;
}
}
**Registration Page**
public sealed partial class RegPage : Page
{
Database db;
public RegPage()
{
this.InitializeComponent();
}
private void BtnSubmit_Click(object sender, RoutedEventArgs e)
{
int code =1;
UserDB user = new UserDB();
{
user.UserName = Username.Text.Trim();
user.Password = Password.Password;
user.PhoneNo = PhoneNo.Text.ToString();
user.Email = Email.Text.Trim();
user.DateofBirth = DateofBirth.ToString();
};
if (code == -1)
{
var message = new MessageDialog("Register failed");
//await message.ShowAsync();
}
else
{
var message = new MessageDialog("Register success");
this.Frame.Navigate(typeof(MainPage));
}
}
}
我尝试了什么:
不同的在线论坛和在线教程
What I have tried:
different online forums and online tutorials
推荐答案
更改为:
Change to this:
using (SqlCommand command = new SqlCommand(
"INSERT INTO UserDB(Name, Password, Gender, Phone, Email, DOB) VALUES(@username, @password, @gender, @phoneno, @email, @dateofbirth)", conn))
{
command.Parameters.Add(new SqlParameter("@UserName", user.UserName));
command.Parameters.Add(new SqlParameter("@Password", user.Password));
command.Parameters.Add(new SqlParameter("@Gender", user.Gender));
command.Parameters.Add(new SqlParameter("@PhoneNo", user.PhoneNo));
command.Parameters.Add(new SqlParameter("@Email", user.Email));
command.Parameters.Add(new SqlParameter("@DateofBirth", user.DateofBirth));
command.ExecuteNonQuery();
}
但在某处,你还需要打开SqlConnection对象!
这些很重要:
1)DateOfBirth不应该是一个字符串!您应该使用TryParse将用户输入转换为DateTime对象,并将其存储在User类中 - 并将转换后的值传递给SQL以存储在DATE或DATETIME列中,而不是NVARCHAR或VARCHAR列。如果你不这样做,那么当你以后使用这些数据时会遇到很大的问题。
2)绝不以明文形式存储密码 - 这是一个主要的安全风险。有关如何在此处执行此操作的信息:密码存储:如何做到这一点。 [ ^ ] - 我知道它对您来说可能有点先进,但是尽早开始正确的想法和习惯非常重要!存储明文密码是 CodeCrime [ ^ ]
But somewhere, you also need to Open the SqlConnection object!
And these are important:
1) DateOfBirth should not be a string! You should use TryParse to convert the user input into a DateTime object, and store that in your User class instead - and pass the converted value to SQL for storage in a DATE or DATETIME column, not a NVARCHAR or VARCHAR one. If you don;t do that, you will have huge problems when you come to use the data later on.
2) Never store passwords in clear text - it is a major security risk. There is some information on how to do it here: Password Storage: How to do it.[^] - I know it's probably a little advanced for you, but it's very important to get the right ideas and habits started as early as possible! Storing clear text passwords is a CodeCrime[^]
这篇关于关于注册用户的C#类的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!