一.用SqlConnection连接SQL Server
加入命名空间
using SystemDataSqlClient;
连接数据库
SqlConnection myConnection = new SqlConnection();
myConnectionConnectionString = user id=sa;password=sinofindb;initial catalog=test;data source=;Connect Timeout=;
myConnectionOpen();
改进(更通用)的方法
string MySqlConnection=user id=sa;password=sinofindb;Database =test;data source=;Connect Timeout=;
SqlConnection myConnection = new SqlConnection(MySqlConnection);
myConnectionOpen();
二用OleDbConnection连接
加入命名空间
using SystemDataOleDb;
连接sql server
string MySqlConnection=Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;Integrated Security=SSPI;;
SqlConnection myConnection = new SqlConnection(MySqlConnection);
myConnectionOpen();
连接Access(可通过建立udl文件获得字符串)
string MySqlConnection=Provider=MicrosoftJetOLEDB;Data Source=c:\dbmdb;
Persist Security Info=False;
连接Oracle(也可通过OracleConnection连接)
string MySqlConnection=Provider=MSDAORA;Data Source=db; user id=sa;password=sinofindb;
三创建Command对象
.SqlCommand 构造函数
①初始化 SqlCommand 类的新实例public SqlCommand();
SqlCommand myCommand = new SqlCommand();
②初始化具有查询文本的 SqlCommand 类的新实例public SqlCommand(string);
String mySelectQuery = SELECT * FROM mindata;
SqlCommand myCommand = new SqlCommand(mySelectQuery);
③初始化具有查询文本和 SqlConnection 的SqlCommand类实例
Public SqlCommand(string SqlConnection);
String mySelectQuery = SELECT * FROM mindata;
string myConnectString = user id=sa;password=;database=test;server=mySQLServer;
SqlConnection myConnection = new SqlConnection(myConnectString);
SqlCommand myCommand = new SqlCommand(mySelectQuerymyConnection);
④初始化具有查询文本SqlConnection 和 Transaction 的 SqlCommand 类实例
public SqlCommand(string SqlConnection SqlTransaction);
SqlTransaction myTrans = myConnectionBeginTransaction();
String mySelectQuery = SELECT * FROM mindata;
string myConnectString = user id=sa;password=;database=test;server=mySQLServer;
SqlConnection myConnection = new SqlConnection(myConnectString);
SqlCommand myCommand = new SqlCommand(mySelectQuerymyConnection myTrans);
建立SqlCommand与SqlConnection的关联
myCommandConnection = myConnection;
或者SqlCommand myCommand = myConnectionCreateCommand;
.设置SqlCommand的查询文本
myCommandCommandText = SELECT * FROM mindata;
或者第种构造SqlCommand myCommand = new SqlCommand(mySelectQuery);
给SqlCommand对象提供两个查询字符串每个查询字符串访问不同的表返回不同的结果集
两个查询语句用分号分隔
执行命令
ExecuteReader
返回一行或多行
ExecuteNonQuery
对 Connection 执行 TransactSQL 语句并返回受影响的行数(int)
ExecuteScalar
返回单个值(如一个聚合值)返回结果集中第一行的第一列忽略额外的列或行
ExecuteXmlReader
将 CommandText 发送到 Connection 并生成一个 XmlReader 对象
SqlDataReader myReader = myCommandExecuteReader();
或SqlDataReader myReader = myCommandExecuteReader(CommandBehaviorCloseConnection);
while(myReaderRead()) //循环读取数据
{
ConsoleWriteLine(myReaderGetString());// 获取指定列的字符串形式的值
ConsoleWriteLine(myReader GetValue());// 获取以本机格式表示的指定列的值
}
CommandText = select count(*) as NumberOfRegions from region;
Int count = (int) myCommandExecuteScalar();
关于OleDbCommand对象的使用
四.DataReader的使用
.遍历结果集
while (myReaderRead())
ConsoleWriteLine(\t{}\t{} myReaderGetInt() myReaderGetString());
myReaderClose();
.使用序数索引器
while (myReaderRead())
ConsoleWriteLine(\t{}\t{} myReader[]ToString() myReader[]ToString());
myReaderClose();
.使用列名索引器
while (myReaderRead())
ConsoleWriteLine(\t{}\t{} myReader[code]ToString() myReader[name]ToString());
myReaderClose();
使用类型访问器
public char GetChar(int i); 获取指定列的单个字符串形式的值
public DateTime GetDateTime(int i); 获取指定列的 DateTime 对象形式的值
public short GetInt(int i); 获取指定列的 位有符号整数形式的[C#]
public string GetString(int i); 获取指定列的字符串形式的值
.得到列信息
myReaderFieldCount 获取当前行中的列数
myReaderGetFieldType(序号) 获取是对象的数据类型的 Type
myReaderGetDataTypeName(序号) 获取源数据类型的名称
myReaderGetName(序号) 获取指定列的名称
myReaderGetOrdinal(序号) 在给定列名称
的情况下获取列序号
得到数据表的信息
myReaderGetSchemaTable() 返回一个 DataTable
.操作多个结果集
myReaderNextResult() 使数据读取器前进到下一个结果集
do
{
while (myReaderRead())
ConsoleWriteLine(\t{}\t{} myReaderGetInt() myReaderGetString());
}
while(myReaderNextResult());
五.DataAdapter
创建SqlDataAdapter
初始化 SqlDataAdapter 类的新实例
public SqlDataAdapter();
将指定的 SqlCommand 作为SelectCommand 属性初始化 SqlDataAdapter 类的新实例
public SqlDataAdapter(SqlCommand);
用 selectcommand字符串 和 SqlConnection对象初始化SqlDataAdapter 类的新实例
public SqlDataAdapter(string SqlConnection);
用 selectcommand字符串 和 一个连接字符串 初始化SqlDataAdapter 类的新实例
public SqlDataAdapter(string string);
.DataAdapter和SqlConnectionSqlCommand建立关联
.DataAdapter在构造参数时建立
.SqlDataAdapter adapter = new SqlDataAdapter();
adapterSelectCommand = new SqlCommand(query conn);
.DataAdapterFill()方法
在 DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行并创建一个名为Table的 DataTable
public override int Fill(DataSet);
在 DataSet 中添加或刷新行以匹配使用 DataSet 和 DataTable 名称的数据源中的行
public int Fill(DataSet string);
在 DataSet 的指定范围中添加或刷新行以匹配使用 DataSet 和 DataTable 名称的数据源中的行
public int Fill(DataSet int int string);
在 DataTable 中添加或刷新行以匹配使用 DataTable 名称的数据源中的行
public int Fill(DataTable);
在 DataTable 中添加或刷新行以匹配使用指定 DataTable 和 IDataReader 名称的数据源中的行
protected virtual int Fill(DataTable IDataReader);
在 DataTable 中添加或刷新行以匹配使用 DataTable 名称指定的 SQL SELECT 语句和 CommandBehavior 的数据源中的行
protected virtual int Fill(DataTable IDbCommand CommandBehavior);
六.DataTable 类
七.DataColumn 类
八.DataRow 类
九.DataSet 类
.创建DataSet 对象
初始化 DataSet 类的新实例
public DataSet();
用给定名称初始化 DataSet 类的新实例
public DataSet(string);
.用DataAdapter填充DataSet
DataSet myds=new DataSet();
adapterfill(myds)
adapterfill(myds表名); 用一个表去填充DataSet
十 DataTableCollection 类
表示 DataSet 的表的集合
DataTableCollection dtc = dsTables;
DataTable table = dtc[表名];
String strExpr = id > ;
String strSort = name DESC;
DataRow[] foundRows = customerTableSelect( strExpr strSort);
进行动态的筛选和排序
DataTableSelect() 方法 获取 DataRow 对象的数组
①获取所有 DataRow 对象的数组
public DataRow[] Select();
②按主键顺序(如没有主键则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组
public DataRow[] Select(string);
③获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组
public DataRow[] Select(string string);
④获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组
public DataRow[] Select(string string DataViewRowState);
十一DataView 类 是DataTable内容的动态视图
. 创建对象
初始化 DataView 类的新实例
public DataView();
用指定的 DataTable 初始化 DataView 类的新实例
public DataView(DataTable);
用指定的 DataTableRowFilterSort 和 DataViewRowState 初始化 DataView 类的新实例
public DataView(DataTable string string DataViewRowState);
DataView myview = new DataView(dsTables[Suppliers] id > name DESC
DataViewRowStateCurrentRows);
得到DataView的行数据
foreach (DataRowView myrowview in myview)
{
for (int i = ; i < myviewTableColumnsCount; i++)
ConsoleWrite(myrowview [i] + \t);
ConsoleWriteLine();
}