ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。 ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件。 它提供了对关系数据、XML 和应用程序数据的访问,因此是 .NET Framework 中不可缺少的一部分。 ADO.NET 支持多种开发需求,包括创建由应用程序、工具、语言或 Internet 浏览器使用的前端数据库客户端和中间层业务对象。
ADO.net之间就有ADO,这个是一个COM组件,在VB6时代用的特别多,再就是现在还在用的vbs, 也在用这个。Connectiong、 Command、 Recordset和 Field
基本结构


DataSet
Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。
这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。
在创建和生成应用程序之后,可以通过运行命令行实用程序 InstallUtil.exe 并将该路径传递给服务的可执行文件来安装它。 然后,可以使用服务控制管理器 来启动、停止、暂停、恢复和配置服务。
服务生存期
服务可以三种基本状态之一存在:Running、Paused 或 Stopped。 该服务还可以报告挂起命令的状态:ContinuePending、PausePending、StartPending 或 StopPending。
字符串
| 方法名称 & 描述 |
|---|
| **public static int Compare( string strA, string strB )**比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。该方法区分大小写。 |
| **public static int Compare( string strA, string strB, bool ignoreCase )**比较两个指定的 string 对象,并返回一个表示它们在排列顺序中相对位置的整数。但是,如果布尔参数为真时,该方法不区分大小写。 |
| **public static string Concat( string str0, string str1 )**连接两个 string 对象。 |
| **public bool Contains( string value )**返回一个表示指定 string 对象是否出现在字符串中的值。 |
| **public static string Copy( string str )**创建一个与指定字符串具有相同值的新的 String 对象。 |
| **public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count )**从 string 对象的指定位置开始复制指定数量的字符到 Unicode 字符数组中的指定位置。 |
| **public bool EndsWith( string value )**判断 string 对象的结尾是否匹配指定的字符串。 |
| **public bool Equals( string value )**判断当前的 string 对象是否与指定的 string 对象具有相同的值。 |
| **public static bool Equals( string a, string b )**判断两个指定的 string 对象是否具有相同的值。 |
| **public static string Format( string format, Object arg0 )**把指定字符串中一个或多个格式项替换为指定对象的字符串表示形式。 |
| **public int IndexOf( char value )**返回指定 Unicode 字符在当前字符串中第一次出现的索引,索引从 0 开始。 |
| **public int IndexOf( string value, int startIndex )**返回指定字符串从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
| **public int IndexOfAny( char[] anyOf )**返回某一个指定的 Unicode 字符数组中任意字符在该实例中第一次出现的索引,索引从 0 开始。 |
| **public int IndexOfAny( char[] anyOf, int startIndex )**返回某一个指定的 Unicode 字符数组中任意字符从该实例中指定字符位置开始搜索第一次出现的索引,索引从 0 开始。 |
| **public string Insert( int startIndex, string value )**返回一个新的字符串,其中,指定的字符串被插入在当前 string 对象的指定索引位置。 |
| **public static bool IsNullOrEmpty( string value )**指示指定的字符串是否为 null 或者是否为一个空的字符串。 |
| **public static string Join( string separator, string[] value )**连接一个字符串数组中的所有元素,使用指定的分隔符分隔每个元素。 |
| **public int LastIndexOf( char value )**返回指定 Unicode 字符在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
| **public int LastIndexOf( string value )**返回指定字符串在当前 string 对象中最后一次出现的索引位置,索引从 0 开始。 |
| **public string Remove( int startIndex )**移除当前实例中的所有字符,从指定位置开始,一直到最后一个位置为止,并返回字符串。 |
| **public string Remove( int startIndex, int count )**从当前字符串的指定位置开始移除指定数量的字符,并返回字符串。 |
| **public string Replace( char oldChar, char newChar )**把当前 string 对象中,所有指定的 Unicode 字符替换为另一个指定的 Unicode 字符,并返回新的字符串。 |
| **public string Replace( string oldValue, string newValue )**把当前 string 对象中,所有指定的字符串替换为另一个指定的字符串,并返回新的字符串。 |
| **public string[] Split( params char[] separator )**返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。 |
| **public string[] Split( char[] separator, int count )**返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。 |
| **public bool StartsWith( string value )**判断字符串实例的开头是否匹配指定的字符串。 |
| **public char[] ToCharArray()**返回一个带有当前 string 对象中所有字符的 Unicode 字符数组。 |
| **public char[] ToCharArray( int startIndex, int length )**返回一个带有当前 string 对象中所有字符的 Unicode 字符数组,从指定的索引开始,直到指定的长度为止。 |
| **public string ToLower()**把字符串转换为小写并返回。 |
| **public string ToUpper()**把字符串转换为大写并返回。 |
| **public string Trim()**移除当前 String 对象中的所有前导空白字符和后置空白字符。 |
BackgroundWorker

C#using System.ComponentModel;
namespace threadexp
{
public partial class FrmMain : Form
{
//实例化BackgroundWorker
private BackgroundWorker bgWorker = new BackgroundWorker();
public FrmMain()
{
InitializeComponent();
}
private void FrmMain_Load(object sender, EventArgs e)
{
pbar.Maximum = 1000;
//是否报告处理进度
bgWorker.WorkerReportsProgress = true;
//是否允许取消操作
bgWorker.WorkerSupportsCancellation = true;
//执行三个事件,DoWork事件,ProgressChanged事件以及RunWorkedCompleted事件
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgessChanged);
bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_WorkerCompleted);
}
public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
//设置进度条Maximum为1000,循环1000次
for (int i = 0; i <= 1000; i++)
{
//获取是否取消操作
if (bgWorker.CancellationPending)
{
e.Cancel = true;
return;
}
else
{
//报告进度
bgWorker.ReportProgress(i, "Working");
System.Threading.Thread.Sleep(10);
}
}
}
public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
{
//e.ProgressPercentage是获取任务int类型
pbar.Value = e.ProgressPercentage;
lblTitle.Text = "处理进度:" + Convert.ToString(e.ProgressPercentage);
}
public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//若没有完全执行结束,则报错
if (e.Error != null)
{
MessageBox.Show(e.Error.ToString());
return;
}
if (!e.Cancelled)
this.lblTitle.Text = "处理完毕!";
else
this.lblTitle.Text = "处理终止!";
}
//开始
private void btnStart_Click(object sender, EventArgs e)
{
//正忙时不允许继续操作
if (bgWorker.IsBusy)
return;
//异步开启
bgWorker.RunWorkerAsync("start");
}
//停止
private void btnStop_Click(object sender, EventArgs e)
{
bgWorker.CancelAsync();
}
}
}