1.数据库查询数据读取
datareader.HasRows 只是检则库中是否有记录,如果有则返回true,还得再用read()读取.如果没有记录则返回false。
datareader.read()为从数据开头往后读,如果库中已读到结尾了(可能没有记录)则返回false,如果用在if中,则会自动读出一条,else里则不必再用read(),如果有while(含有read()条件),则自动从第二条开始往下读。
SqlCommand winccXCmd
ss1 = true;
ss = "";
ss2 = "";
string sql1;
SqlDataReader dbReader;
for (int Numer1 = 7; Numer1 < 25; Numer1++)
{
vstemp = 字段.Substring(Numer1 - 1, 1);
sql1 = "SELECT TypeName FROM [数据库].[dbo].[表名] WHERE ";
sql1 += " [字段]=" +Numer1 ;
sql1 += " AND [字段]=" + vstemp;
winccXCmd.CommandText = sql1;
dbReader = winccXCmd.ExecuteReader();
if (dbReader.HasRows)
{
while (dbReader.Read())
{
ss = dbReader["字段"].ToString();
ss2 += ss+" ";
}
dbReader.Close();
dbReader.Dispose();
}
else
{
ss1 = dbReader.HasRows;
break;
}
}
2.LINQ
2.1.LINQ查询表达式
约束 | Linq查询表达式必须以from子句开头,以select或group子句介绍 |
---|---|
关键字 | 功能 |
from...in... | 指定要查询的数据源以及范围变量,多个from子句则表示从多个数据源查找数据。注意:C#编译器会把"复合from子句"的查询表达式转换为SelectMany()扩展方法。 |
join...in...on...equals... | 指定多个数据源的关联方式 |
let | 引入用于存储查询表达式中子表达式结果的范围变量。通常能达到层次感会更好,使代码更易于阅读。 |
orderby、descending | 指定元素的排序字段和排序方式。当有多个排序字段时,由字段顺序确定主次关系,可指定升序和降序两种排序方式 |
where | 指定元素的筛选条件。多个where语句则表示了并列条件,必须全部都满足才能入选。每个where子句可以使用谓词&&、||连接多个条件表达式。 |
group | 指定元素的分组字段 |
select | 指定查询要返回的目标数据,可以指定任何类型,甚至是匿名类型。(目前通常被指定为匿名类型) |
into | 提供一个临时的标识符。该标识可以引用join、group和select子句的结果。1.直接出现在join子句之后的into关键字会被翻译为GroupJoin。(into之前的查询变量可以继续使用) 2.select或group子句之后的into它会重新开始一个查询,让我们可以继续引入where,orderby和select子句,它是对分步构建查询表达式的一种简写方式。(into之前的查询变量都不可再使用) |