select查询语句时sql语句中最常用的,其中日期有特殊的格式要求,就是日期前后都要连接一个#。可以筛选等于、介于、不等于、大于、小于某个日期的数据,也可以只筛选指定字段的数据,在select后边,如果是*号,就是筛选全部数据,如果指定字段,则各个字段名称间用空格隔开。举例如下:
1、Select * from 表名称 where 出库日期 between #2016-01-01# and #2015-05-05#
上面这句的意思是筛选指定表中的出库日期介于2016-01-01至2016-05-05之间的全部数据
2、Select 产品名称 型号  from 表名称 Where 出库日期 =#2016-01-04#
这句的意思是筛选指定表中的出库日期等于2016-01-04的产品名称和型号的数据

版权声明:本文为博主原创文章,未经博主允许不得转载。

第一步:#import "C:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" no_namespace rename("EOF","adoEOF")

_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
::CoInitialize(NULL); //初始化COM,MFC中可在CxxxApp中的InitInstance中用AfxOleInit()完成
 try{
  //创建Connection 对象
  m_pConnection.CreateInstance("ADODB.Connection");
  //设置连接字符串,必须是BSTR型或者_bstr_t类型
  _bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\cf\\桌面\\000.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

//_bstr_t strConnect="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\cf\\桌面\\000.xlsx;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";//用于连接excel 2007,首先需要查看计算机是否安装有AccessDatabaseEngine.exe,没有的话需要先下载安装

OLEDB同样可以通过ODBC来操作数据库,利用DRIVER={drivername};DSN='';DBQ=filepath

//A: HDR ( HeaDer Row )设置

//若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

//若指定值為 No,代表 Excel 档中的工作表第一行就是資料了,沒有栏位名称

//B:IMEX ( IMport EXport mode )设置

//IMEX 有三种模式,各自引起的读写行为也不同,容後再述:

//0 is Export mode

//1 is Import mode

//2 is Linked mode (full update capabilities)

//我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:

//当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。

//当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。

//当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途
  m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("select * from [Sheet1$]",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
//m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);//与上面等价

_variant_t var;
_bstr_t strName;
while(!m_pRecordset->adoEOF){
var=m_pRecordset->GetCollect("ENG");
if(var.vt!=VT_NULL)
strName=(LPCSTR)_bstr_t(var);
AfxMessageBox(strName);
m_pRecordset->MoveNext();
}
   
 }catch(_com_error e)   //捕捉异常
 {
  AfxMessageBox("error!");
   
 }
 if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
   ::CoUninitialize();

使用Microsoft.Jet.OLEDB读取Excel文件时需要在sql中指定表名,形如[Sheet1$],也就是xls文件中的工作表。对于导入Excel文件这类操作,因为用户提供的xls文件中工作簿的名字不一定是默认的“Sheet1”,检测Excel文件的工作表的名称往往需要调用Excel的com对象来获得,比较麻烦。

另外有个办法可以获得工作表名称,以下是c#代码:

public static string GetFirstTableName()
        {

DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        string tableName = dt.Rows[0][2].ToString().Trim();
        return tableName;
        }

但是上面的方法获取的表名,其实是经过排序的,不一定就是位置在第一个的工作表的名称,所以并不一定适用。

其实可以用下面的办法绕过这个必须显式指定工作表的问题,在OleDb调用的获取数据的SQL这样指定表名:

SELECT * FROM [$A1:R65536]

此处[$A1:R65536] 替换通常的[Sheet1$],其含义就是获取xls文件中在第一个位置的工作表中A列到R列的1-65536行这块数据。这样就可以避免获取第一个工作表的问题,根据要导入的xls文件内容可以修改 开始列字母1:结束列字母65536 中的字母为实际需要的值

EXCEL OLEDB 查询相关推荐

  1. excel查询oracle数据库,用Excel直接查询Oracle中的数据

    一般情况下,我们如果想要把Oracle当中查询的数据保存为Excel文件,一般都是使用的是PL/SQLDeveloper,本文就给大家介绍一下关于用Excel直接查询Oracle中的数据的内容. 事实 ...

  2. oracle匹配excel数据,如何用Excel直接查询Oracle中的数据

    如何用Excel直接查询Oracle中的数据 关注:275  答案:2  mip版 解决时间 2021-01-11 08:35 提问者╬═掵中注定 2021-01-10 16:43 如何用Excel直 ...

  3. WPS excel 实现查询返回所有符合的结果,将结果拼成一个字符串

    WPS excel 实现查询返回所有符合条件的数据,将结果拼成一个字符串返回显示 实现效果如下: 案例文件地址https://download.csdn.net/download/shandongmi ...

  4. C#通过OleDb查询Oracle存储过程

    using System; using System.Data; using System.Data.OleDb; /// <summary>/// 通过OleDb查询Oracle存储过程 ...

  5. 0基础用android做一个excel表查询器(2):编写程序

    0基础用android做一个Excel表查询器(2):编写程序 编完页面下面就该开始写程序了,首先确定一下思路,很简单,将Excel表写入一个List(或数组)里,然后获取Plain Text中写入的 ...

  6. excel oledb mysql_OLEDB操作Excel

    使用OLEDB操作Excel 的方法 OleDbConnection conn = null; try { //fileName 表示要操纵的Excel的文件路径,如果excel不存在,现创建它,可以 ...

  7. excel oledb mysql_excel连接数据库oledb

    该 ISAM 不支持在链接表中删除数据. 使用OleDB方式操作Excel,删除表中的数据时提示该错误 相关代码: 连接字符串: //定义OleDB连接字符串 string strConn = &qu ...

  8. 使用EXCEL的查询

    一.直接用ADO连接Excel 直接用ADOQuery连接,其ConnectionString设为 Provider=microsoft.jet.oledb.4.0;data source=C://2 ...

  9. 如何用Excel直接查询Oracle中的数据(转)

    将Oracle中查询的数据保存为Excel文件,通常使用的是PL/SQL Developer. 其实,Excel可直接写SQL语句查询Oracle中数据,在这里,用到ODBC驱动.详细步骤如下: 一. ...

最新文章

  1. 【ACM】UVa 1339
  2. DELPHI FMX 获取系统版本 ANDROID IOS通用
  3. Snort规则检测引擎--架构解析
  4. Pomelo:网易开源基于 Node.js 的游戏服务端框架
  5. Geoserver的ImageMosaic数据源添加以及服务发布
  6. 基于物理的渲染详尽指南 卷1光与介质:基于物理的渲染和着色理论
  7. python学习之路——day1(18/9/11)
  8. 【原创】实战padding oracle漏洞
  9. GPS经纬度转百度经纬度JAVA
  10. 购买vSphere虚拟化主机的配置建议清单
  11. 子域名劫持漏洞详解、挖掘和防护
  12. 管螺纹如何标注_你所不知道的机械螺纹全面常识(分享篇),赶紧收藏下吧
  13. 自建Ceph存储与 AWS、阿里云、腾讯云的成本对比
  14. 命令行工具 DOT和DOH测试
  15. gurobi中的lp
  16. 一个疯子的梦-20190921
  17. 个人第一篇博客——自我介绍
  18. export default (imported as router) was not found_as也可以用于倒装句,你所不知道的as用法...
  19. 【全文】工信部正式发布《公共互联网网络安全突发事件应急预案》
  20. 优思学院|六西格玛黑带应如何选择和评估项目?

热门文章

  1. 手写Vue3.0响应式
  2. 蓝桥杯-左移右移(2022国赛)
  3. VS2008序列号/注册码/90天试用版改…
  4. 九度_题目1388:跳台阶
  5. 数据结构实训 校园导游系统
  6. 北京交通大学2022-2023学年第一学期研究生《随机过程I》试题
  7. JavaScript验证码
  8. 苹果朝生产电视机又前进了一步
  9. 2008服务器域名无限解析吗,如何把server 2008搭建成域名解析服务器?
  10. 一代房地产枭雄潘石屹要跑了