OleDb和ADO.NET读取文本文件时进行条件查询

原创 2010年08月18日 15:17:00

OleDb 和ADO.NET读取文本文件如何像一般的SQL查询那样进行条件查询呢?文本文件没有所谓的字段名称,该怎么处理呢?其实,在使用ADO.NET进行读 取数据记录的时候,在程序内部应该是有字段名称来标识这些列的(具体的定义没有找到官方的文档,本文是采用实验的方法得到的结论),那么,怎么知道列名是 什么呢?下面的方法就可以很清楚地看到:

ASPX 代码
<% @ Page Language = " C# " EnableViewState = " false " %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
< script runat ="server" >
  protected
void Page_Load(object sender, EventArgs e)
  {
    string ConnectionString;
    string SQLString;
    ConnectionString
= " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " +
                        Server.MapPath(
" ~ " ) + " ;Extended Properties=/"Text;HDR=No;FMT=Delimited/" " ;
    SQLString
= " Select * from a.txt " ;
    System.Data.OleDb.OleDbConnection ConnectionText
= new System.Data.OleDb.OleDbConnection();
    ConnectionText.ConnectionString
= ConnectionString;
    ConnectionText.Open();
    System.Data.OleDb.OleDbDataAdapter AdapterText
= new System.Data.OleDb.OleDbDataAdapter(SQLString, ConnectionText);
    System.Data.DataSet DataSetText
= new System.Data.DataSet();
    AdapterText.Fill(DataSetText,
" TextFile " );
    GridView1.DataSource
= DataSetText;
    GridView1.DataBind();
    ConnectionText.Dispose();
  }

</ script >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
  
< title > 孟宪会读取文本文件测试 </ title >
</ head >
< body >
  
< form id ="form1" runat ="server" >
  
< asp:GridView ID ="GridView1" runat ="server" ShowHeader ="True" >
  
</ asp:GridView >
  
</ form >
</ body >
</ html >

可以看到如下的结果:

F1 F2 F3 F4 F5
2010/7/27 8:58:35 0.005 8 mxh http://dotnet.aspx.cc
2010/7/27 8:58:36 0.005 2 mxh http://dotnet.aspx.cc
2010/7/27 8:58:37 0.005 6 net_lover http://dotnet.aspx.cc
2010/7/27 8:58:38 0.005 0 net_lover http://dotnet.aspx.cc
2010/7/27 8:58:39 0.004 0 net_lover http://dotnet.51aspx.com
2010/7/27 8:58:40 0.005 3 net_lover http://dotnet.aspx.cc
2010/7/27 8:58:41 0.005 0 net_lover http://dotnet.aspx.cc
2010/7/27 8:58:42 0.005 9 net_lover http://dotnet.aspx.cc
2010/7/27 8:58:43 0.005 0 孟宪会 http://dotnet.51aspx.com
2010/7/27 8:58:44 0.005 0 孟宪会 http://dotnet.aspx.cc

好了,知道了列名,那么按条件查询应该是可以的,下面就进行下测试:

ASPX 代码
<% @ Page Language = " C# " EnableViewState = " false " %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
< script runat ="server" >
  protected
void Page_Load(object sender, EventArgs e)
  {
    string ConnectionString;
    string SQLString;
    ConnectionString
= " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " +
                        Server.MapPath(
" ~ " ) + " ;Extended Properties=/"Text;HDR=No;FMT=Delimited/" " ;
    SQLString
= " Select * from a.txt Where F1=#2010/7/27 8:58:36# " ;
    SQLString
= " Select * from a.txt Where F2=0.006 " ;
    SQLString
= " Select * from a.txt Where F4='孟宪会' And F5='http://dotnet.aspx.cc' " ;
    SQLString
= " Select * from a.txt Where F4='孟宪会' " ;
    System.Data.OleDb.OleDbConnection ConnectionText
= new System.Data.OleDb.OleDbConnection();
    ConnectionText.ConnectionString
= ConnectionString;
    ConnectionText.Open();
    System.Data.OleDb.OleDbDataAdapter AdapterText
= new System.Data.OleDb.OleDbDataAdapter(SQLString, ConnectionText);
    System.Data.DataSet DataSetText
= new System.Data.DataSet();
    AdapterText.Fill(DataSetText,
" TextFile " );
    GridView1.DataSource
= DataSetText;
    GridView1.DataBind();
    ConnectionText.Dispose();
  }

</ script >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
  
< title > 孟宪会读取文本文件测试 </ title >
</ head >
< body >
  
< form id ="form1" runat ="server" >
  
< asp:GridView ID ="GridView1" runat ="server" ShowHeader ="False" >
  
</ asp:GridView >
  
</ form >
</ body >
</ html >


测试用的a.txt文件内容如下:
2010-7-27 8:58:35,0.005,8,mxh,http://dotnet.aspx.cc
2010-7-27 8:58:36,0.005,2,mxh,http://dotnet.aspx.cc
2010-7-27 8:58:37,0.005,6,net_lover,http://dotnet.aspx.cc
2010-7-27 8:58:38,0.005,0,net_lover,http://dotnet.aspx.cc
2010-7-27 8:58:39,0.004,0,net_lover,http://dotnet.51aspx.com
2010-7-27 8:58:40,0.005,3,net_lover,http://dotnet.aspx.cc
2010-7-27 8:58:41,0.005,0,net_lover,http://dotnet.aspx.cc
2010-7-27 8:58:42,0.006,9,net_lover,http://dotnet.aspx.cc
2010-7-27 8:58:43,0.005,0,孟宪会,http://dotnet.51aspx.com
2010-7-27 8:58:44,0.005,0,孟宪会,http://dotnet.aspx.cc

注意:日期格式可能根据系统的设置有所不同,这点需要注意。

ADO.NET(OleDb)读取Excel表格时的一个BUG

假设我们有如下一个Excel表格:    现在要使用C#程序读取其内容:  using System;  using System.Data.OleDb;    namespace S...

第二十八讲 : ADO.NET概述(OLEDB对象操作)

第二十八讲 : ADO.NET概述 主要内容:     1. ADO.NET的结构          2. 连接和命令         Connection对象            ...

DB2开发ADO.NET和OLEDB应用程序

  • 2013年12月11日 18:27
  • 1.52MB
  • 下载

ODBC、OLEDB、ADO、ADO.NET之间的关系

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 先说ODBC,官...

ODBC、OLEDB、ADO、ADO.NET之间的关系

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 先说ODB...

OLE,OLEDB,ADO,ADO.NET

OLE OLE是Object Linking and Embedding,对象链接与嵌入技术,比如我们在Word中插入一个Excel图表,用的都是OLE技术; ActiveX其实说起来是OLE2....

OLEDB与ADO 、ADO.NET

OLE DB 连接 您可以使用 OLE DB 提供程序与数据库进行通信。通过创建直接的数据库特定的 OLE DB 连接,可以消除 Web 应用程序和数据库之间的 ODBC 层,从而提高连接的速度。...
  • ssyyll
  • ssyyll
  • 2012年05月11日 13:19
  • 1880

使用ADO.NET对SQL Server数据库进行访问

在上一篇博客中我们给大家简单介绍了一下VB.NET语言的一些情况,至于理论知识的学习我们可以利用VB的知识体系为基础,再将面向对象程序设计语言的知识进行融合便可进行编程实战。          如果我...

ADO.NET 连接方式进行数据访问

连接到数据源 连接到数据源需要使用两步: 1.创建连接字符串 2.使用Connection通过连接字符串进行连接 例1: //使用连接字符串 //注意引用System...
  • itmaxin
  • itmaxin
  • 2012年05月21日 16:24
  • 839

如何使用Ado.net对数据库进行增删改操作

1.准备一个连接字符串 2.以这个连接字符串,创建
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OleDb和ADO.NET读取文本文件时进行条件查询
举报原因:
原因补充:

(最多只允许输入30个字)