-
ADO 指 ActiveX 数据对象( ActiveX Data Objects)
-
ADO 是一个微软的 Active-X 组件
-
ADO 会随微软的 IIS 被自动安装
-
ADO 是一个访问数据库中数据的编程接口
对象总结编辑
对象
|
说明
|
Command
|
Command 对象定义了将对数据源执行的指定命令。
|
Connection
|
代表打开的、与数据源的连接。
|
DataControl (
RDS)
|
绑定Recordset到一个或多个控件上,以便在 Web 页上显示数据。
|
DataFactory (RDS Server)
|
实现对客户端应用程序的指定数据源进行读/写数据访问的方法。
|
DataSpace (RDS)
| |
Error
|
包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。
|
Field
|
代表使用普通数据
类型的数据的列。
|
Parameter
|
参数化查询或存储过程的 Command 对象相关联的参数或自变量。
|
Property
|
代表由提供者定义的 ADO 对象的动态特性。
|
RecordSet
|
代表来自基本表或命令执行结果的记录的全集。
|
接口简介编辑
事件 | 事件描述 | 事件数据 |
---|---|---|
ConnectionClose | 指示 ADO 要与 OLE DB 数据源断开连接。 | 无。 |
ConnectionOpen | 指示 ADO 正在连接到 OLE DB 数据源。 | 如果客户端提供,则为连接到数据源所用的连接字符串。 |
Find | 指示 ADO 客户端已调用 ADO Recordset.Find 函数。 | “查找”操作的判据;根据该判据匹配记录。 |
GetRows | 指示 ADO 客户端已调用 ADO Recordset.GetRows 函数。 | 提取的行数。 |
QueryResult | 指示数据库已返回响应查询的结果集。 | 无。 |
QuerySend | 指示 ADO 正在执行命令。该事件可由下列函数触发:
Connection.Execute Command.Execute Connection.<存储过程名> Recordset.Open | 构成查询的 SQL 语句。 |
RecordsetOpen | 指示 ADO 正在打开远程服务器上的记录集。仅适用于三层方案。 | 打开记录集的源(通常为行返回的命令文本)。 |
Sort | 指示 ADO 准备筛选或对数据排序。 | 排序或筛选应用于记录集数据的判据。 |
Transaction Rollback | 指示 ADO 要中止当前本地事务。 | 返回真或假。如果为真,则保持中止,即该事务中止后紧跟着开始另一事务。如果为假,则不保持中止。 |
TransactionCommit | 指示 ADO 正在提交 OLE DB 提供程序上的本地事务。 | 返回真或假。如果为真,则保留提交,即该事务提交后紧跟着开始另一事务。如果为假,则不保留提交。 |
TransactionStart | 指示 ADO 正在开始 OLE DB 提供程序上的本地事务。 | ADO 开始事务所基于的隔离级别。隔离级别指示可看到其他事务所做更改的哪一级别。 |
UpdateBatch | 指示 ADO 正在向提供程序发送更新批处理。仅适用于三层方案。 | 如果有,为 ADO 将更新发送到的远程服务器名。 |
编程模型编辑
常用知识点总结如下.
1.ADO.Net中提供了对各种不同数据库的统一操作接口.
2.内嵌的MDF文件可以将数据库直接加入项目中,即解决方案中,可以在服务器资源管理器中查看, 选择任务--分离可以分离出MDF文件,即可进行相关的COPY操作.
但正式生产运行时,需要把MDF文件附加到SQL数据库中, 即中VS中执行附加操作.
3.连接字符串:程序通过连接字符串指定要边哪台服务器上的,哪个实例的哪个数据库,用什么用户名密码等.
项目内嵌MDF文件的连接字符串形式为"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True". 常用@修饰.
"=.\SQLEXPRESS"表示本机上的SQLEXPRESS实例, 如果数据库实例名有变化,需要相 应更改.
"Database1.mdf"为MDF的文件名.
4.ADO.Net中通过 SqlConnection类创建到 SQLServer的连接, SqlConnection代表一个数据库连接, ADO.NetK 连接等资源都实现了IDisposable接口,可以使用 using进行资料管理,执行备注中的代码如果成功了就 ok.
5.SqlConnection.Open表示打开数据库.
6.SqlCommand表示向服务器提交一个命令(SQL语句等), CommandText属性为要执行的SQL语句,
ExecuteNonQuery方法执行一个非查询语句(Update,Insert,Delete等),返回值为影响的行数.
ExecuteScalar方法用于执行查询,并返回查询所返回的结果集中第一行的第一列,因为不能确定返回值的类型,所以返回值是object类型.
得到自动增长字段的主键值,在values关键词前加上OUTPUT inserted.Id,其中Id为主键字段名,执行结果就试插入的主键值,用ExecuteScalar执行最方便 .
即INSERT INTO T_Users (UserName,Password) OUTPUT inserted.Id VALUES ( 'ADMIN','888888'); 等同于Convert.ToInt32(SqlCommand.ExecuteScalar());
.
7. 执行有多行结果集的用ExecuteReader命令.
SqlDataReader提供一种从 SQL Server 数据库读取行的只进流的方式。此类是继承:public class SqlDataReader : DbDataReader, IDataReader, IDisposable, IDataRecord
SqlDataReader reader=cmd.ExecuteReader(); while(reader.Read()){Console.WriteLine(reader.GetString(1));
reader的GetString,GetInt32等方法只接受整数参数, 用GetOrdinal方法根据列名可动态得到序号.
常用属性
名称 | 说明 |
---|---|
Depth | 获取一个值,用于指示当前行的嵌套深度。 |
FieldCount | 获取当前行中的列数。 |
HasRows | 获取一个值,该值指示 SqlDataReader 是否有行。 |
IsClosed | 指定的SqlDataReader 实例是否已关闭。 |
Item[Int32] | 获取指定列(数字索引),通常在While.Read()中使用。 |
Item[String] | 获取指定列(字符串索引), 通常在While.Read()中使用。 |
RecordsAffected | 获取执行 T-SQL 语句所更改、插入或删除的行数。 |
VisibleFieldCount | 获取 SqlDataReader 中未隐藏的字段的数目。 |
常用方法
名称 | 说明 |
Read | 前进到下一记录,异步版本ReadAsync。 |
GetString | 返回指定类型的值,其他的都类似。 |
NextResult | 当处理批处理的T-SQL语句时,跳到下一结果,异步版本NextResultAsync。 |
GetValue | 获得该列的值,返回object类型。 |
GetValues | 使用当前列指来填充参数中的对象数组。 |
Close | 关闭 SqlDataReader 对象。 |
8.若操作中与关键字重复,需要加中括号以示区别.
9.INSERT INTO T_Users (UserName,Password) OUTPUT inserted.Id VALUES ( 'ADMIN','888888'),其中OUTPUT inserted.Id 表示输出相关项.
10.对于创建的连接, CLOSE后可以重新打开,但DISPOSE后是不能打开的,只能重新建立. 而USING的作用则在作用域外相当于DISPOSE.
11.为应对SQL注入攻击, 可以通过设置参数化查询进行相关的操作,代码如下:
cmd.CommandText="select count(*) from T_Users where UserName= @UN and PassWord=@P.
cmd.Parameters.Add(new SqlParameter("UN",username));
cmd.Parameters.Add(new SqlParameter("P",password));
// UserName是数据库中的字段名, username则是接受输入的变量名. 而@符号表示后面跟的是变量参数名称.
12.在同一人连接中,如果SqlDataReader没有关闭,那么是不能执行UPDATE之类的操作的.
13.数据库连接的几种方法, 虽然创建连接后必须处理掉,但由于第一次连接相对较慢,故 需要多次操作时,尽量减少打开次数.
数据库的连接方法有2
1>在web.config 文件添加
<appseting>
<add key=
"ConnectionString"
value=
"uid=;password=;database=;server=;"
>
</appseting>
|
调用时:
string
connectionString=
System.Configuration.ConfigurationManager.AppSetings[
"ConnectionString"
].ToString();
|
2>、在web.config 文件添加<connectionStrings>
<add name=
"ConnectionString"
connectionString="Data Source=;Inital Catalog=;
Integrated Security=True;
" ProviderName="
System.Data.SqlClinet">
</connectionStrings>
|
3>、创建“基于服务的数据库”
string
dataDir = AppDomain.CurrentDomain.BaseDirectory;
//获取应用程序当前目录
if
(dataDir.EndsWith(
@"\bin\Debug\"
)|| dataDir.EndsWith(
@"\bin\Release\"
))
//此方法适用于控制台应用和winForm
{
dataDir=System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData(
"DataDirectory"
,dataDir);
}
string
strConnection =
@"Data Source=.\SQLEXPRESS;AttachDBFileName=|DataDirectory|\Database1.mdf;
Integrated Security=True;User Instance=True"
;
|
string dataDir = AppDomain.CurrentDomain.BaseDirectory;//取得当前APP的路径
if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))//判断路径中是以"\bin\Debug\或\bin\Release\结尾的任意一个
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;//取得上3层的目录
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);//为App应用程序域的DataDirectory属性赋值,值是取得上3层的目录
}
14.SqlCommand.Parameters 屬性
命名空間: System.Data.SqlClient
組件: System.Data (在 System.Data.dll 中)
comm.Parameters.Add()添加参数到参数集,add里面的第一个参数是要添加的参数名,第二个参数是参数的数据类型
Parameters的作用就是把存储过程执行结束后得到的参数传到程序里
第一个是参数名,第二个是参数类型,第三个是长度
15.SqlCommand对象允许你指定在数据库上执行的操作的类型。比如,你能够对数据库中的行数据执行select,insert,modify以及delete命令。SqlCommand对象能被用来支持断开连接数据管理的情况,可以只单独使用SqlCommand对象。也可以与SqlDataAdapter一起实现断开数据连接,实现操作数据库的应用程序。这节课将同时展示如何从数据库中返回一个单独的值,比如表中记录的数量。
完成数据库连接后,需创建一个新的Command对象,示例代码如下所示。
类的属性编辑
18. 引用confirguration后, 可以直接引用静态类的成员:ConfigurationManager.ConnectionStrings["ConnStr"].Connectionstring
19.FolderBrowserDialog 类 提示用户选择文件夹。无法继承此类。
命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)
Properties
Name | Description | |
---|---|---|
![]() | Container |
Gets the IContainer that contains the Component.(Inherited from Component.) |
![]() | Description |
Gets or sets the descriptive text displayed above the tree view control in the dialog box. |
![]() | RootFolder |
Gets or sets the root folder where the browsing starts from. |
![]() | SelectedPath |
Gets or sets the path selected by the user. |
![]() | ShowNewFolderButton |
Gets or sets a value indicating whether the New Folder button appears in the folder browser dialog box. |
![]() | Site | |
![]() | Tag |
Gets or sets an object that contains data about the control. (Inherited from CommonDialog.) |
Name | Description | |
---|---|---|
![]() | CreateObjRef(Type) |
Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.(Inherited fromMarshalByRefObject.) |
![]() | Dispose() | |
![]() | Equals(Object) |
Determines whether the specified object is equal to the current object.(Inherited fromObject.) |
![]() | GetHashCode() |
Serves as the default hash function. (Inherited from Object.) |
![]() | GetLifetimeService() |
Retrieves the current lifetime service object that controls the lifetime policy for this instance.(Inherited fromMarshalByRefObject.) |
![]() | GetType() | |
![]() | InitializeLifetimeService() |
Obtains a lifetime service object to control the lifetime policy for this instance.(Inherited fromMarshalByRefObject.) |
![]() | Reset() |
Resets properties to their default values.(Overrides CommonDialog.Reset().) |
![]() | ShowDialog() |
Runs a common dialog box with a default owner.(Inherited from CommonDialog.) |
![]() | ShowDialog(IWin32Window) |
Runs a common dialog box with the specified owner.(Inherited from CommonDialog.) |
![]() | ToString() |
Name | Description | |
---|---|---|
![]() | Disposed | |
![]() | HelpRequest |
This API supports the product infrastructure and is not intended to be used directly from your code. Occurs when the user clicks theHelp button on the dialog box. |
20.Directory 类 公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 此类不能被继承。
命名空间: System.IO
程序集: mscorlib(位于 mscorlib.dll)
方法
程序集: mscorlib(位于 mscorlib.dll)
名称 | 说明 | |
---|---|---|
![]() ![]() | ChangeExtension(String, String) |
更改路径字符串的扩展名。 |
![]() ![]() | Combine(String, String) |
将两个字符串组合成一个路径。 |
![]() ![]() | Combine(String, String, String) |
将三个字符串组合成一个路径。 |
![]() ![]() | Combine(String, String, String, String) |
将四个字符串组合成一个路径。 |
![]() ![]() | Combine(String[]) |
将字符串数组组合成一个路径。 |
![]() ![]() | GetDirectoryName(String) |
返回指定路径字符串的目录信息。 |
![]() ![]() | GetExtension(String) |
返回指定的路径字符串的扩展名。 |
![]() ![]() | GetFileName(String) |
返回指定路径字符串的文件名和扩展名。 |
![]() ![]() | GetFileNameWithoutExtension(String) |
返回不具有扩展名的指定路径字符串的文件名。 |
![]() ![]() | GetFullPath(String) |
返回指定路径字符串的绝对路径。 |
![]() ![]() | GetInvalidFileNameChars() |
获取包含不允许在文件名中使用的字符的数组。 |
![]() ![]() | GetInvalidPathChars() |
获取包含不允许在路径名中使用的字符的数组。 |
![]() ![]() | GetPathRoot(String) |
获取指定路径的根目录信息。 |
![]() ![]() | GetRandomFileName() |
返回随机文件夹名或文件名。 |
![]() ![]() | GetTempFileName() |
在磁盘上创建磁唯一命名的零字节的临时文件并返回该文件的完整路径。 |
![]() ![]() | GetTempPath() |
返回当前用户的临时文件夹的路径。 |
![]() ![]() | HasExtension(String) |
确定路径是否包括文件扩展名。 |
![]() ![]() | IsPathRooted(String) |
获取一个值,该值指示指定的路径字符串是否包含根。 |
名称 | 说明 | |
---|---|---|
![]() ![]() | AltDirectorySeparatorChar |
提供平台特定的替换字符,该替换字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。 |
![]() ![]() | DirectorySeparatorChar |
提供平台特定的字符,该字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。 |
![]() ![]() | InvalidPathChars |
已过时。 提供平台特定的字符数组,这些字符不能在传递到 Path 类的成员的路径字符串参数中指定。 |
![]() ![]() | PathSeparator |
用于在环境变量中分隔路径字符串的平台特定的分隔符。 |
![]() ![]() | VolumeSeparatorChar |
提供平台特定的卷分隔符。 |