使用 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
}
我对 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
}