gpt4 book ai didi

c# - 变量未声明或从未分配?和数据读取器不工作?

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:32 26 4
gpt4 key购买 nike

我不想发布这个,但我找不到解决这个问题的答案。

我正在为 friend 制作应用程序,但是当我运行它时,它给了我一个警告,并且最近开始崩溃。

我试着调试这个问题,它给了我一个完全不同的问题。

class DBApplication : DBInfo
{
private MySqlConnection connection = new MySqlConnection();
private int customer_id;
public string lastname;

//constructor
public DBApplication()
{
OrderID();
}

public string OrderID()
{
customer_id = 8;
//add the DataBase query to the string.
string query = "SELECT * FROM wdb_customer WHERE=" + customer_id;

if (OpenConnection() == true)
{
MySqlCommand myComm = connection.CreateCommand();
MySqlDataReader Reader;
myComm.CommandText = query;
/*when I debugged, it said this was the problem?
but i dont understand why.*/*
Reader = myComm.ExecuteReader();

while (Reader.Read())
{
lastname = Reader["customer_name"].ToString();
}
Reader.Close();
}
return lastname;
}
}

第一个问题“变量 DB_App 未声明或从未分配。”

来自这个脚本。

partial class Form1 {
...
private DBApplication DB_App = new DBApplication();
...
private void InitializeComponent()
{
this.OrderID.Text = DB_App.lastname;
}

我也尝试过 DB_App.OrderID();同样的问题。

最佳答案

您的查询无效,因为您在 WHERE 子句中遗漏了一个列名

应用快速修复更改

string query = "SELECT * FROM wdb_customer WHERE=" + customer_id;

string query = "SELECT * FROM wdb_customer WHERE customer_id = " + customer_id;
^^^ use real column name here

附带说明:不要直接从用户输入构建 SQL 查询字符串;改用参数。它可以防止您的代码受到 SQL 注入(inject)。阅读更多 here

据说您的代码可能如下所示

...
myComm.CommandText = "SELECT * FROM wdb_customer WHERE customer_id = @customer_id";
myComm.Parameters.AddWithValue("@customer_id", customer_id);
Reader = myComm.ExecuteReader();
...

关于c# - 变量未声明或从未分配?和数据读取器不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534232/

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