ADO开发第一步-登录数据库(二)

今天不用该死的SQLDMO了,改用OleDbConnection。

首先,代码开头添加一些引用:

using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
以表示将应用到这些库的一些类和对象。

然后,应该创建一个OleDbConnection对象,并定义其连接字符串。

   string strConn;
   strConn=@"Provider=""SQLOLEDB.1"";User ID=""sa"";Password=""sa1234"";Data Source=""203-12/QPCEGG"";Initial Catalog=pubs";
   OleDbConnection cn=new OleDbConnection(strConn);

其中,strConn中两个双引号是为了标志这个双引号是包含在字符串中的,防止C#将引号认为是字符串的开始和结束的标记。

对于连接数据库,用OleDbConnection的Open()方法开放连接,而用Close()方法关闭连接。

可以通过cn对象获取数据库的一些信息。

cn.Open();  

Console.WriteLine("ServerVersion: " + cn.ServerVersion
    + "/nState: " + cn.State.ToString());

cn.Close();

此时编译运行则输出如下:

ServerVersion: 08.00.0194
State: Open
Press any key to continue

下面使用Commands对象对数据库进行查询,并用DataReader对象检查返回的查询结果。

通过cn.CreateCommand(),可以得到OleDbConnection对象cn的Commands对象cmd;

然后用cmd的ExecuteNonQuery()方法执行没有返回行的查询(操作查询),或者通过cmd的ExecuteReader对象来执行有返回行的查询,并建立一个DataReader对象来读取查询结果。

示例代码如下:

   //创建Commands对象
   int nColumns;
   int i;
   using(OleDbCommand cmd=cn.CreateCommand())
   {
    try
    {
     //执行操作查询(无返回行的查询)
     cmd.CommandText="use pubs/nselect * from jobs";
     cmd.ExecuteNonQuery();
     //执行有返回行的查询
     //用DataReader对象检查查询结果
     cmd.CommandText="use pubs/nselect * from roysched";
     OleDbDataReader rdr=cmd.ExecuteReader();
     nColumns=rdr.FieldCount;
     while(rdr.Read())
     {
      for(i=0;i<nColumns;i++)
      {
       if(i>0)
        Console.Write("/t");
       Console.Write(rdr[i]);
      }
      Console.WriteLine();
     }
    }
    catch(Exception e)
    {
     Console.WriteLine(e.Message);
    }
   }

以下是Main函数里面的所有代码:

   string strConn;
   //设置数据库连接字符串
   strConn=@"Provider=""SQLOLEDB.1"";User ID=""sa"";Password=""sa1234"";Data Source=""203-12/QPCEGG"";Initial Catalog=";
   //建立数据库连接
   OleDbConnection cn=new OleDbConnection(strConn);
   cn.Open();
   //显示当前数据库
   Console.WriteLine(cn.Database);
   //显示数据库版本信息和状态信息
   Console.WriteLine("ServerVersion: " + cn.ServerVersion
    + "/nState: " + cn.State.ToString());
   //创建Commands对象
   int nColumns;
   int i;
   using(OleDbCommand cmd=cn.CreateCommand())
   {
    try
    {
     //执行操作查询(无返回行的查询)
     cmd.CommandText="use pubs/nselect * from jobs";
     cmd.ExecuteNonQuery();
     //执行有返回行的查询
     //用DataReader对象检查查询结果
     cmd.CommandText="use pubs/nselect * from roysched";
     OleDbDataReader rdr=cmd.ExecuteReader();
     nColumns=rdr.FieldCount;
     while(rdr.Read())
     {
      for(i=0;i<nColumns;i++)
      {
       if(i>0)
        Console.Write("/t");
       Console.Write(rdr[i]);
      }
      Console.WriteLine();
     }
    }
    catch(Exception e)
    {
     Console.WriteLine(e.Message);
    }
   }
   //关闭数据库连接
   cn.Close();

执行结果为:

master
ServerVersion: 08.00.0194
State: Open
BU1032  0       5000    10
BU1032  5001    50000   12
PC1035  0       2000    10
PC1035  2001    3000    12
PC1035  3001    4000    14
PC1035  4001    10000   16
PC1035  10001   50000   18
BU2075  0       1000    10
BU2075  1001    3000    12
BU2075  3001    5000    14
BU2075  5001    7000    16
BU2075  7001    10000   18
BU2075  10001   12000   20
BU2075  12001   14000   22
BU2075  14001   50000   24
PS2091  0       1000    10
PS2091  1001    5000    12
PS2091  5001    10000   14
PS2091  10001   50000   16
PS2106  0       2000    10
PS2106  2001    5000    12
PS2106  5001    10000   14
PS2106  10001   50000   16
MC3021  0       1000    10
MC3021  1001    2000    12
MC3021  2001    4000    14
MC3021  4001    6000    16
MC3021  6001    8000    18
MC3021  8001    10000   20
MC3021  10001   12000   22
MC3021  12001   50000   24
TC3218  0       2000    10
TC3218  2001    4000    12
TC3218  4001    6000    14
TC3218  6001    8000    16
TC3218  8001    10000   18
TC3218  10001   12000   20
TC3218  12001   14000   22
TC3218  14001   50000   24
PC8888  0       5000    10
PC8888  5001    10000   12
PC8888  10001   15000   14
PC8888  15001   50000   16
PS7777  0       5000    10
PS7777  5001    50000   12
PS3333  0       5000    10
PS3333  5001    10000   12
PS3333  10001   15000   14
PS3333  15001   50000   16
BU1111  0       4000    10
BU1111  4001    8000    12
BU1111  8001    10000   14
BU1111  12001   16000   16
BU1111  16001   20000   18
BU1111  20001   24000   20
BU1111  24001   28000   22
BU1111  28001   50000   24
MC2222  0       2000    10
MC2222  2001    4000    12
MC2222  4001    8000    14
MC2222  8001    12000   16
MC2222  12001   20000   18
MC2222  20001   50000   20
TC7777  0       5000    10
TC7777  5001    15000   12
TC7777  15001   50000   14
TC4203  0       2000    10
TC4203  2001    8000    12
TC4203  8001    16000   14
TC4203  16001   24000   16
TC4203  24001   32000   18
TC4203  32001   40000   20
TC4203  40001   50000   22
BU7832  0       5000    10
BU7832  5001    10000   12
BU7832  10001   15000   14
BU7832  15001   20000   16
BU7832  20001   25000   18
BU7832  25001   30000   20
BU7832  30001   35000   22
BU7832  35001   50000   24
PS1372  0       10000   10
PS1372  10001   20000   12
PS1372  20001   30000   14
PS1372  30001   40000   16
PS1372  40001   50000   18

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值