求字符串转义的怪问题

qgipfk168 2010-09-08 06:16:35
有一个数据库连接字符串。我直接输出在TEXTBOX的TEXT上。显示是正常的。
string tr = @"SELECT * into bijiao from OpenDataSource('Microsoft.ACE.OLEDB.12.0','DataSource=""C:\bijiao.xlsx"";Extended properties=""Excel 12.0""')...sheet1$";
控件文本上输入出来为:SELECT * into bijiao from OpenDataSource('Microsoft.ACE.OLEDB.12.0','Data Source="C:\bijiao.xlsx";Extended properties="Excel 12.0"')...sheet1$
但是直接用到 OleDbCommand中时。字符串就变成这样的。然后提示from后有语法错误。好头痛。
SELECT * into bijiao from OpenDataSource('Microsoft.ACE.OLEDB.12.0','DataSource=\"C:\\bijiao.xlsx";Extended properties=\"Excel 12.0\"')...sheet1$
求高手解答!
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qgipfk168 2010-09-08
  • 打赏
  • 举报
回复
难道ACCESS2007 不支持这句SQL 语句吗
q107770540 2010-09-08
  • 打赏
  • 举报
回复
try:

SELECT * into bijiao FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source=C:\bijiao.xlsx;Extended Properties=EXCEL 12.0')...[Sheet1$] ;
宝_爸 2010-09-08
  • 打赏
  • 举报
回复
我觉得字符串没啥问题。
你debug是看到的\" 其中\是转义而已。
q107770540 2010-09-08
  • 打赏
  • 举报
回复
SELECT * into bijiao from OpenDataSource('Microsoft.ACE.OLEDB.12.0','DataSource=\"C:\\bijiao.xlsx";Extended properties=\"Excel 12.0\"')...sheet1$
============
SELECT * into bijiao FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source=C:\bijiao.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;

这种写法是以 1997 - 2003 格式创建与 Excel 电子表格的即席连接。
你将bijiao.xlsx转成2003格式再试试

参考:http://msdn.microsoft.com/zh-cn/library/ms179856.aspx
快乐乔巴 2010-09-08
  • 打赏
  • 举报
回复
楼主对比下吧 没做过 怀疑是写的读取格式不对 帮你找了篇

--开启服务器端相关配置(SQL Server 2000默认已开启,SQL Server 2005和SQL Server 2008中未开启)
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

--读取Office2007中Excel和Access中的数据
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=YES;Database=c:\bb.xlsx;','SELECT * FROM [Query$]')
GO
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','C:\aa.accdb';'admin';'',Sample)
GO

--读取Office2003中Excel和Access中的数据
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;database=c:\bb.xls',[Query$])
GO
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;database=c:\bb.xls','SELECT * FROM [Query$]')
GO
SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\bb.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...Query$
GO
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\aa.mdb';'admin';'',Sample)
GO
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\aa.mdb';'admin';'','SELECT * FROM Sample')
GO
SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\aa.mdb";User ID=Admin;Password=')...Sample
GO


本文来自CSDN博客,转载请标明出处:http://webcache.googleusercontent.com/search?q=cache:dv9NTUsJ1vUJ:blog.csdn.net/usher_gml/archive/2009/06/15/4270939.aspx+select+from+opendatasource+OLEDB.12.0&cd=5&hl=zh-CN&ct=clnk
KnowKjava 2010-09-08
  • 打赏
  • 举报
回复
应该可以的
qgipfk168 2010-09-08
  • 打赏
  • 举报
回复
谁把这句SQL语句调用试下。看是不是会跟我一样会报错。
qgipfk168 2010-09-08
  • 打赏
  • 举报
回复
MY GOD
我那句SQl和这句SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=YES;Database=c:\bb.xlsx;','SELECT * FROM [Query$]')
都能在SQL 2000中运行。一到CS文件调用字符串马上变成 C:\\xxx.xx了。前面加了@也不行。不加@的话。c:\xxx.xx会提示\号转义错误。头痛。没天意。。哭求原来。开发为.net 2005。Access2007数据库。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧