gpt4 book ai didi

c# - 数据未写入MYSQL数据库

转载 作者:行者123 更新时间:2023-11-29 13:23:28 25 4
gpt4 key购买 nike

我在将信息写入数据库时​​遇到问题。我使用的是从 YouTube 上观看视频中学到的方法,我们制作了一个查询字符串并输入了所有INSERT INTO内容,但我正在尝试一种新的方法,使用我读过的参数更安全,可以防止 SQL 注入(inject),而我读过的这些参数是不好的。

我正在使用下面的代码,一切运行正常,没有错误,它正在连接到我的 FTP 服务器并执行所有操作。我的问题是,它没有像以前使用安全性较低的代码时那样将任何输入的用户信息写入 MYSQL 数据库。

另外,如果回答这个问题的人知道如何检查用户名是否已被数据库占用,请告诉我,这样我就不必提出单独的问题。我尝试过类似的事情

if(Reader.HasRows) MessageBox.Show("Username Taken");

但我收到错误使用未分配的局部变量“reader”

我正在使用的代码:

    private void btnRegister_Click(object sender, EventArgs e)
{
MySqlDataReader reader;
int numerror = 0;
if (RUsernameTextBox.Text == "")
{
numerror = numerror + 1;
}
if (RPasswordTextBox.Text == "")
{
numerror = numerror + 1;
}
if (REmailTextBox.Text == "")
{
numerror = numerror + 1;
}
if (numerror == 1)
{
ErrorLabel.Text = "*1 required field is blank.";
}
else if (numerror == 2)
{
ErrorLabel.Text = "*2 required fields are blank";
}
else if (numerror == 3)
{
ErrorLabel.Text = "*3 required fields are blank";
}
else
{
if (reader.HasRows) CMessageBox("Error", "");
//add the user to the MySQL database
string HashedPassword = EncodePassword(RPasswordTextBox.Text);
string constring = "datasource=localhost;port=3306;username=Admin;password=**********";
using (MySqlConnection con = new MySqlConnection(constring))
{
MySqlCommand cmd = new MySqlCommand("INSERT INTO userinfo.users (username,password,email,premium,picture) VALUES (@username, @hashedpassword, @email , @premium , @picture);");
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Username", RUsernameTextBox.Text);
cmd.Parameters.AddWithValue("@hashedpassword", HashedPassword);
cmd.Parameters.AddWithValue("@email", REmailTextBox.Text);
cmd.Parameters.AddWithValue("@premium", "0");
cmd.Parameters.AddWithValue("@picture","ftp://***.***.*.**/Profile Pictures/" + RUsernameTextBox.Text + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png");

try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MakeLoginVisible();
try
{
string TempFolder = Path.GetTempPath();
RProfilePicture.Image.Save(@"C:\temp\" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png", System.Drawing.Imaging.ImageFormat.Png);
ftp ftpclient = new ftp(@"ftp://***.***.*.**/", "Admin", "**********");
ftpclient.createDirectory("Profile Pictures/" + RUsernameTextBox.Text);
ftpclient.upload("Profile Pictures/" + RUsernameTextBox.Text + "/" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png", @"C:\temp\" + Path.GetFileNameWithoutExtension(RProfilePicture.ImageLocation) + ".png");
MakeLoginVisible();
CMessageBox("Success!", "AirSpace Account '" + RUsernameTextBox.Text + "' Created.");
ftpclient = null;
}
catch (Exception ex)
{
CMessageBox("Error", ex.Message.ToString());
}
}
catch (Exception ex)
{
CMessageBox("Error", ex.Message.ToString());
}
}
}

最佳答案

Use of unassigned local variable 'xxx'

意味着编译器无法断定您在给定时间已为某个变量赋予了值。为它分配任何内容(包括 null)都会删除该错误消息,因为这样编译器就会知道您已经考虑过该变量的内容。

关于c# - 数据未写入MYSQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20460246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com