分享
 
 
 

ADO.net学习记录 (一)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

数据的规范化:是把数据尽可能的分解到多个表上,最小化重复相同数据的次数。

ADO.net的主要对象元素:

数据源:通常指的是一个关系数据库,如SQLserver等

托管的数据供应程序:提供数据仓库通信的功能 如ODBC等

Connection对象:建立一个页面程序与数据库驱动的通信管道

Command对象:一个包含读写数据指令的工具

DataReader/DataSet对象:存储已读出或写入数据的地方

.Net控件:主要指<asp:datagrid>

Connection对象:主要用于连接数据源

通过Open()方法打开连接字符串中的连接

连接字符串包含3各部分的信息:

>> 第一部分指定要使用的供应程序或驱动程序的种类 //server=localhost

>> 第二部分指定要使用的数据库 //database=Mydatabase

>> 第三部分通常包含安全信息,包括用户名,密码等 //uid=foolboy;pwd=Mypasswd

Command对象和DataReader:读取和修改数据

Command用法:

objCommand = new OleDbCommand(strSQL,objConnection);

objDbDataReader = objCommand.ExecuteReader();

DataReader:存储数据

读取方法 DataReader["FIELD"]

数据绑定:

是在数据源和数据使用者创建一个连接的过程。

主要是指绑定到DataGrid上

DataReader的局限:

>> 只能读取数据,不能修改数据

>> 只能向前循环数据

>> 只能处理一个表的数据

DataSet是他的替代品还是DataTable??他们的主要区别?

DataSet和DataTable对象

DataSet表示数据库中的数据,与DataReader不同它可以存储几个表和他们之间的关系。

在使用表示主要要用到下面4各对象:

>> DataTable: 表示表本身

>> DataSet: 核心对象,建立多表之间的adhoc关系,可以一表中的一行和另一表的一行关联起来

>> DataAdapter: 用于结果从Connection传给Dataset。Fill()方法把数据拷贝到DataSet中, Update()方法把DataSet中的数据烤回数据源。

>> DataView: 表示DataSet中存储的DataTables的特定视图

>> DataGrid: 等的DataSource最终只绑定到某具体DataView上

ADO.net关于SQL Server的对象

sqlConnection

sqlCommand

sqlDataAdapter

数据异常处理

常见问题:

>> 代码包含对不存在的ADO.NET对象的引用

>> 代码请求的数据为NULL不存在

>> 代码的连接字符串错误

>> 包含不存在的列或表的引用

>> 没有提供正确的UserID和Password

>> 代码是用语法不正确的SQl语句

>> 网络问题导致数据库连接问题

处理方法:

利用 try ....catch 捕获错误信息

更新数据方法

问题:

>> 如何更新?我们的修改都是基于断开连接的,如果将修改后的结果写入数据库中?

>> 如何处理同步更新?两个人先后对更新了同一数据,怎么办?结果会被覆盖么?

DataSet & DataTable & DataRow关系如下所示:

--------------------------------------

| DataSet |

| |-------------------------| |

| | DataTable | |

| | | |

| | |----------------| | |

| | | DataRow | | |

| | |----------------| | |

| | | DataRow | | |

| | |----------------| | |

| |-------------------------| |

|------------------------------------|

DataTable = DataSet.Tables["TName"];

DataRow = DataTable.Rows;

string strFirstName = DataRow[0]["FirstName"];

这里的更新的实质都是对数据集DataSet的更新方法,没有涉及到对数据源的更新

更新操作思路:

1.添加记录 (添加行)

添加记录首先需要声明两个变量 DataTable ,DataRow

其中DataTable需要实例化到具体的数据集中的某个table

DataRow = DataTable.NewRow() 声明为Table的新Row

再对DataRow进行赋值,调用DataTable.Rows.Add(DataRow)即可

2.修改纪录 (编辑行)

首先声明一个变量 DataRow[] objRows用来存储要编辑的行

objRows = DataTable.Select("查询条件");

如果是一行,可以这样 objRows = DataTable.Rows[3];

再对其进行修改 如 objRows[0][FIELD1]="" objRows[0][FIELD2]=""

3.删除纪录

如下 DataTable.Rows[5].Delete();

推想:应该可以这样,首先申明一个变量 DataRow[] objRows 用来存储要删除的行

objRows = DataTable.Select("查询条件");

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有