使用 gui c# 从数据库加载数据并使用 SqlDataReader.ExecuteReader() 两次

Load data from database with gui c# and use SqlDataReader.ExecuteReader() twice

我对 C# 和编码还很陌生,希望您能耐心等待。 :)

我使用的是 Visual Studio 2013,我建立了我的数据库连接并且它工作正常。明天我会 post 我的代码,但这里是我的第一个例子:

sSQL = "select person_id from person where person_email_adress = "+ email;
cmd.CommandText = sSQL
cmd.CommandType = CommandType.Text; 
OracleDataReader dr = cmd.ExecuteReader();

while(dr.Read()){
   person_id = dr.GetString(0)
}

这工作正常,但我的问题出在第二个 SQL 命令中:

sSQL = "select article from purchase where person_id = "+ person_id;
cmd.CommandText = sSQL
cmd.CommandType = CommandType.Text; 
OracleDataReader dr = cmd.ExecuteReader();

while(dr.Read()){
   // random stuff
}

我的问题是,我的第二个 SqlDataReader returns 没有行,但是如果我 运行 在 SQLDeveloper 中使用相同的查询 person_id, 我有超过10次点击。

我知道 dr.Read() 是空的,因为我做了以下事情:

if(!dr.HasRow) {
    MessageBox.text("This query is empty");
} else {
    MessageBox.text("This query got some hit");
}

我想过一会儿再看台词,但我总是遇到问题,dr 是空的。

我还用 MessageBox 检查了 SQL 输出是否正确,结果是正确的。

现在怎么办?

我希望你能理解我糟糕的英语,如果你有任何问题,我随时为你服务。 :)

感谢和问候,

Xplosio

首先我会逐行调试以确保 person_id 具有您期望的值。

其次,我会更改 both 查询以使用参数:

sSQL = "select article from purchase where person_id = :person_id";
cmd.CommandText = sSQL
cmd.CommandType = CommandType.Text; 
cmd.Parameters.Add(new OracleParameter("person_id", person_id))
OracleDataReader dr = cmd.ExecuteReader();

while(dr.Read()){

   // random stuff

}