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

时间:2015-12-03 18:46:51

标签: c# sql oracle connection

我对C#和编码很新,所以我希望你能耐心等待我。 :)

我正在使用Visual Studio 2013,我建立了数据库连接,但它确实有效。我明天会发布我的代码,但这是我的第一个例子:

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没有返回任何行,但如果我在SQLDeveloper中使用相同的person_id运行相同的查询,那么我的命中次数超过10次。

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

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

我想暂时阅读并阅读这些内容,但我总是遇到问题,dr为空。

我还检查了SQL输出是否正确,MessageBox是否正确。

现在怎么办?

我希望你能理解我的英语不好,如果你有任何问题我会为你服务。 :)

谢谢和问候,

Xplosio

1 个答案:

答案 0 :(得分:0)

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

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

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

}