我对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
答案 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
}