您的位置:首页 > 数据库

C#access数据库查询操作(一)

2016-04-20 17:17 399 查看
在前面,介绍了数据库的连接操作。数据库有增,删,改,查等操作,但在实际数据库的应用过程中,查询实际上是应用的最多的一种对数据库的操作方式。

1.首先要说一个问题就是,在数据库的定义过程中,表里的字段的数据类型强烈建议按照数据类型定义,比如access里有一个字段为年龄,本来可以定义为int数据类型,这是最好的,当然定义成文本类型也可以用,但非常不建议这样做,这样在实际编码过程中会遇到一些很烦的问题,我就亲身经历过,明明是数字类型,数据库的提供方偏要弄成文本类型,造成了很多的困扰,在自己设计数据库的过程中,强烈建议按照数据类型来定义。

2.定义数据库变量

OleDbDataAdapter oleDapAdapter; //检索与填充数据,一般填充SQL语句
DataSet ds = new DataSet();     //填充ds,保存数据

调试的时候可以把光标放在ds上面,点击放大镜查看ds里的数据。

3.全查询,假设数据库中有名为dictionary的表

SQL语句 select * from 表名

oleDapAdapter = new OleDbDataAdapter("select * from dictionary", conn);
oleDapAdapter.Fill(ds);
ds里面就是填充的数据,查询完后往往需要遍历,ds中的行就是数据库的行,数据库的行数为ds.Tables[0].Rows.Count,ds中的列就是数据库的列,数据库的列数为ds.Tables[0].Columns.Count。

遍历所有元素

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
MessageBox.Show(ds.Tables[0].Rows[i]["字段名称"].ToString());//需要转成String类型
}
}
ds.Reset(); //清除查询记录,因为查询的记录保存在ds中,如果不清空,则ds中的记录会带入下一次的查询中,进行任何查询后,再操作数据库后需要清空ds,避免累积.


4.查询某一字段或者某些字段所有值

(1)SQL语句 select 字段名 from 表名

oleDapAdapter = new OleDbDataAdapter("select NumValue from dictionary ", conn);  //查询dictionary表中的NumValue字段
oleDapAdapter.Fill(ds);

(2)SQL语句 select 字段名1,字段名2,... from 表名

oleDapAdapter = new OleDbDataAdapter("select NumValue1,NumValue2... from dictionary ", conn);  //查询dictionary表中的NumValue字段
oleDapAdapter.Fill(ds);


5.条件查询

(1)条件为一个确定的值查询

SQL语句 select * from 表名 where 字段名=XXX;

这里就要注意数据类型是文本还是数字了,如果是数字则不需要加引号,如果是文本则需要加上引号!!。

如果数据类型是数字,则:

oleDapAdapter = new OleDbDataAdapter("select * from dictionary where NumValue =1", conn); //1不加引号
oleDapAdapter.Fill(ds);
如果数据类型是文本,则:

oleDapAdapter = new OleDbDataAdapter("select * from dictionary where NumValue ='1'", conn); //1加上引号
oleDapAdapter.Fill(ds);


查询某一字段只用把*改成字段名即可,这里不再赘述。

(2)条件范围查询,范围查询往往查询的字段为数字类型

SQL语句select * from 表名 where 字段名 between num1 and num2; 查询num1和num2之间的数据,

oleDapAdapter = new OleDbDataAdapter("select * from dictionary where month between 1 and 4"conn);
oleDapAdapter.Fill(ds);



上述语句查询了1,2,3,4月的数据

注意如果month为文本,写成这样的话

oleDapAdapter = new OleDbDataAdapter("select * from dictionary where month between '1' and '4'", conn);
oleDapAdapter.Fill(ds);
如果数据库里有11,12月的数据,那么查询的是1,11,12,2,3,4月的数据了,因为在字符比较里11是小于2的,这里要注意,所以前面说了一定要严格按照数据类型来设计,否则有可能产生意外的结果。

6.求和

在实际过程中,求和使用的挺广泛的

oleDapAdapter = new OleDbDataAdapter("select SUM(NumValue) from dictionary where monthValue between 1 and 3", conn);
oleDapAdapter.Fill(ds);
查询1到3之间的和,可以把monthValue改成其他值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: