C#如何获取Access数据库中字段的数据类型

cykinnn 2014-09-04 09:59:12
比如,如果用C#访问MSSQL,可以用

DataAdapter.FillSchema(ds,Schema.source) //得到表的结构信息

在得到DataTable后,在遍历DataColumn的时候,用column.DataType 就可以得到段的数据类型,而且该类型是.NET FRAMEWORK框架类型。
但我用同样的方法访问Access数据库文件(*.mdb)的时候,到了FillSchema的地方,就会有错误提示:
引用
The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

请问这个问题该怎么解决?

PS:在得到Access表结构的问题上,我也试过了GetSchema()和GetOleDbSchema(),但是他们返回的数据类型,要么是OLE DB 类型,要么是整形数,我不知道该怎么转化为.NET FRAMEWORK框架类型。
...全文
602 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cykinnn 2014-09-07
  • 打赏
  • 举报
回复
我找到问题出在哪里了。 我原来的语句是SELECT TOP 0 FROM Table,TOP 0在MSSQL里是支持的,因为我只查表的结构,但是在access中不支持。于是我改为了SELECT TOP 1 FROM Table就可以了。 这也让我对Fill有了进一步的认识。 感谢各位帮助,现在散分。
cykinnn 2014-09-04
  • 打赏
  • 举报
回复
引用 5 楼 gxingmin 的回复:
写个函数,switch对应一下
这个方法倒是可以,就是比较麻烦。 我就是想知道有不有像FillSchema这样的方法。
gxingmin 2014-09-04
  • 打赏
  • 举报
回复
写个函数,switch对应一下
cykinnn 2014-09-04
  • 打赏
  • 举报
回复
引用 2 楼 gxingmin 的回复:
你将oledbtype类型和C#类型对应下吧 参考 OleDbType,C#,access 对应数据类型,互相对应
你的意思是先做个字典(Dictionary)?
cykinnn 2014-09-04
  • 打赏
  • 举报
回复
引用 1 楼 rayyu1989 的回复:
目测是你select语句有问题
MSDN上讲,FillSchema方法就是用SELECT 语句来查询的,但是具体怎么查询的没说,所以也不知道哪里出的问题。
gxingmin 2014-09-04
  • 打赏
  • 举报
回复
你将oledbtype类型和C#类型对应下吧 参考 OleDbType,C#,access 对应数据类型,互相对应
rayyu1989 2014-09-04
  • 打赏
  • 举报
回复
目测是你select语句有问题
rayyu1989 2014-09-04
  • 打赏
  • 举报
回复
引用 3 楼 cykinnn 的回复:
[quote=引用 1 楼 rayyu1989 的回复:] 目测是你select语句有问题
MSDN上讲,FillSchema方法就是用SELECT 语句来查询的,但是具体怎么查询的没说,所以也不知道哪里出的问题。[/quote] 把你的语句贴出来

111,097

社区成员

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

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

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