如何在asp.net中编写正确的sql查询语句语法

时间:2014-08-09 03:31:47

标签: sql asp.net sql-server-2008

现在我遇到了一个问题:我想从数据库中得到result ='yes'和'no'的总数。 其实我在我的sql server studio中尝试sql查询工作正常,但是当我在同一个sql查询中放置时 asps.cs的代码,什么都没发生,我不知道为什么。希望有人能帮我找到问题。

代码如下:

String query_risk1 = "SELECT (SELECT count(result) FROM [rampDB].[dbo].[Answers] WHERE [result]='yes' AND [company] = @deName1 AND [questionID] BETWEEN '1.1a' AND '1.1e' )+(SELECT count(result) FROM [rampDB].[dbo].[Answers] WHERE [result]='no' AND [company] = @deName1 AND [questionID] BETWEEN '1.1a' AND '1.1e')"; 
DataSet ds_risk = new DataSet();

SqlDataAdapter riskadapter1 = new SqlDataAdapter(query_risk1, sqlConn);
riskadapter1.SelectCommand.Parameters.Add(new SqlParameter("@deName1", site_name));
DataTable risk_table1 = new DataTable();
riskadapter1.Fill(risk_table1);

ds_risk.Tables.Add(risk_table1);
risk_table1 = ds_risk.Tables[0];
grid2.DataSource = ds_risk;
grid2.DataBind();

2 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT SUM(CASE WHEN [result] = 'yes' OR [result] = 'no' THEN 1 ELSE 0 END) As Result
FROM [rampDB].[dbo].[answers] 
WHERE [company] = @deName1 AND [questionid] BETWEEN '1.1a' AND '1.1e'

可能是这样的

String query_risk1 = "SELECT SUM(CASE WHEN [result] = 'yes' OR [result] = 'no' THEN 1 ELSE END) As Result FROM [rampDB].[dbo].[answers] WHERE [company] = @deName1 AND [questionid] BETWEEN '1.1a' AND '1.1e'"; 
DataSet ds_risk = new DataSet();    
SqlDataAdapter riskadapter1 = new SqlDataAdapter(query_risk1, sqlConn);
riskadapter1.SelectCommand.Parameters.Add(new SqlParameter("@deName1", site_name));
DataTable risk_table1 = new DataTable();
riskadapter1.Fill(risk_table1);    
ds_risk.Tables.Add(risk_table1);
risk_table1 = ds_risk.Tables[0];
grid2.DataSource = ds_risk;
grid2.DataBind();

答案 1 :(得分:0)

您的查询与此查询类似:

SELECT count(result) 
FROM [rampDB].[dbo].[Answers] 
WHERE ([result]='yes' OR [result]='no') AND 
       [company] = @deName1 AND 
       [questionID] BETWEEN '1.1a' AND '1.1e'

最后如果您使用此查询,则可以使用ExecuteScaler()方法获取查询的返回值:

SqlConnection sqlCon = new SqlConnection("YOUR SQL CONNECTIONSTRING");
SqlCommand    sqlCom = new SqlCommand("THE QUERY", sqlCon);
sqlCom.Parameters.AddWithValue("@deName1", "SOME VALUE");
sqlCon.Open();
int count = (int)sqlCom.ExecuteScaler();
sqlCon.Close();