文件名的特别字符 导致数据库连不上?求解答

sosoben 2012-09-26 01:55:10
2012.02.25_d3.csv 有这样一个文件

我用以下方法数据库连接



DS = getDataset("select top 1 * from " & safefilename & " where [F4] = 'Mid-M 70%' order by [F2],[F3] desc", Filepath)
'FilePath为该CSV所在文件夹,safefilename为该文件文件名

Function getDataset(ByVal sql As String, ByVal path As String) As DataSet
Try

Dim connstr As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & path & "\;Extended Properties=""text;HDR=no;FMT=Delimited"""
Dim conn As OleDbConnection = New OleDbConnection(connstr)
Dim adapter1 As OleDb.OleDbDataAdapter = New OleDbDataAdapter(sql, conn)
Dim cmd As OleDbCommand = New OleDbCommand
Dim commandBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter1)
getDataset = New DataSet
adapter1.Fill(getDataset, "temp")
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Function




但我试过就是因为那个“.”和“-” 号导致访问不了(去除这些符号就OK了), 在safefilename 前后加引号则没有标点的也不行

有什么办法解决呢? 这文件不是我生成的,而且随时会更新数据的,我使用过程中不可能改它的文件名
...全文
192 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxyzjm62 2012-09-28
  • 打赏
  • 举报
回复
先改文件名,再连接
sosoben 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

如果数据不多,可以使用
File.ReadAllLines一次读取,找最后的一个数组行
[/Quote]

2M到3m的文件大小,算多吗? 我没试过运行速度哦, 比复制那个方法快吗?

而且我要查找的是某列数据符合我要求的最后一行的另外一列数据(太罗嗦了,如上面SQL所示),用数组也可以,只是算法方面... 想不到...



sosoben 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

是safefilename 这个变量把“.”和“-” 给过滤了吧,为什么不直接用文件名
[/Quote]

不是的 ,OpenFileDialog获取的文件名就放在safefilename中啊,调试时发现是没有过滤的啊,组成的SQL里面是有“.”和“-”的
孟子E章 2012-09-26
  • 打赏
  • 举报
回复
如果数据不多,可以使用
File.ReadAllLines一次读取,找最后的一个数组行
hztltgg 2012-09-26
  • 打赏
  • 举报
回复
是safefilename 这个变量把“.”和“-” 给过滤了吧,为什么不直接用文件名
sosoben 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

csv就是文本文件,File类可以直接读取内容
[/Quote]

那就是先打开,一行地读,读到最后一行,然后再提取我自己的数据,是吧。 好像不能直接读某一行的吧?
孟子E章 2012-09-26
  • 打赏
  • 举报
回复
csv就是文本文件,File类可以直接读取内容
sosoben 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你可以复制一个文件,不影响别人使用

或者从你文件的来源进行处理,生成的时候就避免这些问题
[/Quote]

那不用数据库有没有方法快速读取最后一行数据?按逗号分隔读到一个数组里?
孟子E章 2012-09-26
  • 打赏
  • 举报
回复
你可以复制一个文件,不影响别人使用

或者从你文件的来源进行处理,生成的时候就避免这些问题
sosoben 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

实在不行,你连接之前先重命名下
[/Quote]

别的程序会写入数据进去的哦 我要重命名==》打开==》 获取数据 ==》然后命名回原来的名字??
孟子E章 2012-09-26
  • 打赏
  • 举报
回复
实在不行,你连接之前先重命名下

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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