我不想发布这个,但我找不到解决这个问题的答案。
我正在为 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/