C# 操作数据库简介

 1 SqlCommand对应着SqlClient模式;OleDbCommand对应着OleDb模式,OdbcCommand对应着Odbc模式。
 2 假设我们想使用SqlClient模式查询SqlServer中testDB数据库中student表中的xh(学号)、xm(姓名)和xb(性别)三列的值,则可以建立如下的命令对象(sConn参见建立的连接sConn:
 3 SqlCommandsCmd=newSqlCommand("SELECTxh,xm,xbFROMstudent",sConn);
 4 亦可使用如下的形式:
 5 SqlCommandsCmd=newSqlCommand();
 6 sCmd.CommandText="SELECTxh,xm,xbFROMstudent";
 7 sCmd.Connection=sConn;
 8 命令对象常用的有三个方法:ExecuteReader(),ExecuteNonQuery()和ExecuteScalar()。ExecuteReader方法用于返回查询结果的全部数据。ExecuteNonQuery方法用于返回所影响的行数,一般用于Insert、Update和Delete操作。ExecuteScalar方法返回结果中的第一行第一列的值。
 9 5、数据读取器DataReader
10 DataReader用于从返回来的数据区中读取数据。其根据使用的数据连接模式不同也有不同的形式:SqlDataReader对应着SqlClient模式,OleDbDataReader对应着OleDb模式,OdbcDataReader对应着Odbc模式。
11 数据读取器应与命令对象配合使用,下面接着4中的例子来写:
12 SqlDataReadersdr=null;
13 sdr=sCmd.ExecuteReader();//执行命令对象,并用sdr指向结果集的第一条记录。
14 while(sdr.Read())//每读取一条记录后,指向其下一条记录
15 {
16 Console.WriteLine("学号:{0},姓名:{1},性别:{2}",sdr["xh"],sdr["xm"],sdr["xb"]);//或使用下面的格式
17 //Console.WriteLine("学号:{0},姓名:{1},性别:{2}",sdr[0],sdr[1],sdr[2]);
18 }
19 sdr.Close();//关闭读取器
20 6、数据集DataSet和数据适配器DataAdapter
21 一般数据集和数据适配器是密不可分的,下面先介绍数据适配器。
22 数据适配器可以容纳一组数据命令和一个数据库连接对象,这与Command对象不同,Command只有一个数据命令和一个数据库连接。数据适配器根据不同的连接模式也有不同的形式:SqlDataAdapter、OleDbDataAdapter和OdbcDataAdapter。下面给出SqlClient模式下数据适配器的定义方式:
23 SqlDataAdaptersda=newSqlDataAdapter("SELECTxh,xm,xbFROMstudent",sConn);
24 第一个参数是用到的SQL语句,第二个参数是数据连接。也可以使用一个命令对象传递上面的信息。即:
25 SqlDataAdaptersda=newSqlDataAdapter(sCmd);
26 下面再介绍一下DataSet,DataSet是在内存中缓存的数据集,包括数据本身,还包括定义在数据上的约束和关系等信息。数据集中可以包含0个这样的数据对象。不管使用什么样的数据库连接模式,其只有唯一的形式。其定义方法如下:
27 DataSetds=newDataSet();
28 定义完数据集后,就可以调用数据适配器的Fill方法来填充数据集:
29 sda.Fill(ds);
30 也可以在填充的同时,指定表名:
31 sda.Fill(ds,"Student");
32 可以使用下面的方法读取数据集中的数据信息:
33 introwNum=ds.Tables["Student"].Rows.Count;//获得数据集表student表中的行数
34 intcolumnNum=ds.Tables["Student"].Columns.Count;//获得数据集表student中的列数
35 for(inti=0;i<rowNum;i++)
36 {
37 for(intj=0;j<columnNum;j++)
38 {
39 Console.Write(ds.Tables["student"].Columns[j].ColumnName+":"+ds.Tables["student"].Rows[i][j].ToString();
40 }
41 Console.WriteLine();
42 }
43 下面给出一个数据库操作的例子。假设在SqlServer中有一个数据库test,其存放着一个数据表名为student,其结构为student(xh,xm,xb,mz),下面使用SqlClient模式连接数据库:
44  
45 usingSystem;
46 //引入命名空间
47 usingSystem.Data;
48 usingSystem.Data.SqlClient;
49 classDbOper
50 {
51 staticvoidMain()
52 {
53 //定义连接字符串
54 stringconnString;
55 connString="server=.;uid=sa;pwd=;database=test;";
56 //定义连接对象sConn
57 SqlConnectionsConn=newSqlConnection(connString);
58 try
59 {
60 //打开连接
61 sConn.Open();
62 }
63 catch(Exceptionex)
64 {
65 //给出错误信息
66 Console.WriteLine("连接错误:"+ex.Message);
67 }
68 //定义SQL查询语句
69 stringsql;
70 sql="select*fromstudent";
71 //定义命令对象sCmd
72 SqlCommandsCmd=newSqlCommand(sql,sConn);
73 //定义数据读取器sdr
74 SqlDataReadersdr=null;
75 //执行命令对象sCmd并赋值给sdr
76 sdr=sCmd.ExecuteReader();
77 //循环输出sdr中的内容
78 Console.WriteLine("学号姓名性别民族");
79 while(sdr.Read())
80 {
81 Console.WriteLine(sdr[0]+""+sdr["xm"]+sdr["xb"]+""+sdr["mz"]);
82 }
83 //关闭数据读取器
84 sdr.Close();
85 //关闭数据库连接
86 sConn.Close();
87 }
88 }

 

转载于:https://www.cnblogs.com/jerry-liu/archive/2013/04/08/3007582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值