我正在处理一个应用程序,我必须从数据库中检索一些数据。我使用以下查询。
SELECT DISTINCT Context.ContextId, ContextName
FROM Context
INNER JOIN RunInstance
ON Context.ContextId IN
(SELECT RunInstance.ContextId
FROM RunInstance
INNER JOIN ProcessInstance
ON RunInstance.RunInstanceId
IN (SELECT RunInstanceId FROM ProcessInstance
WHERE RiskDate = '2010-08-20' ));
此查询在SQL Server 2008中完美运行。
但是,当我把它放在我的C#应用程序中时,它没有显示任何输出。
我的代码:
string squery = @"SELECT DISTINCT Context.ContextId, ContextName FROM Context INNER JOIN RunInstance ON Context.ContextId IN
(Select RunInstance.ContextId From RunInstance
INNER JOIN ProcessInstance ON RunInstance.RunInstanceId
IN (SELECT RunInstanceId FROM ProcessInstance Where
RiskDate = '2010-08-20' )); ";
using(SqlConnection sqcon = new SqlConnection("Data Source=WMLON-Z8-SQL20,61433;Initial Catalog=statusdb;Integrated Security=True")){
sqcon.Open();
using(SqlCommand command = new SqlCommand(squery,sqcon))
using(SqlDataReader reader = command.ExecuteReader()){
while(reader.Read()){
Console.WriteLine(reader[0]+"\t"+reader[1]);
}
}
}
谁能告诉我这是什么问题?
答案 0 :(得分:0)
请将CommandText添加到CommandType并尝试使用。
using(SqlConnection sqcon = new SqlConnection(
"Data Source=WMLON-Z8-SQL20,61433;Initial Catalog=statusdb;Integrated Security=True"))
{
using(SqlCommand command = new SqlCommand(squery,sqcon)){
command.CommandType = CommandType.Text;
sqcon.Open();
using(SqlDataReader reader = command.ExecuteReader())
{
while(reader.Read()){
Console.WriteLine(reader[0]+"\t"+reader[1]);
}
}
sqcon.Close();
}
}
-- Using EXISTS or IN could improve your query
SELECT DISTINCT
Context.ContextId ,
ContextName
FROM Context
INNER JOIN RunInstance ON Context.ContextId = RunInstance.ContextId
INNER JOIN ProcessInstance ON RunInstance.RunInstanceId = ProcessInstance.RunInstanceId
WHERE RiskDate = '2010-08-20'