CSV 文件导入到Dateset 问题

xuelang1225 2014-12-31 04:59:51
代码如下

//获取到csv文件名
string connectstr = e_fullfilepath.Substring(0, e_fullfilepath.Length - 13);


dbcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + connectstr + ";Extended Properties='Text;FMT=Delimited;HDR=NO'; ");
// dbcon = new OdbcConnection("Driver={Misrosoft Text Driver(*.txt;*.csv)}; Dbq=" + odbcfilepath_replace + "; Extensions=asc,csv,tab,txt:Persist Security Info=False");
dbcon.Open();
try
{
if (dbcon.State == ConnectionState.Closed)
{
dbcon.Open();
}


//获取文件名,获取后12位字符,文件名格式必须确定
string dtname = e_fullfilepath.Substring(e_fullfilepath.Length - 12);

OleDbCommand cmd = new OleDbCommand("select * from [" + dtname + "]", dbcon);

OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataSet dstable = new DataSet();
//文件数据放入一个datatable 代码
adapter.Fill(dstable,"csv");

导入其中一条数据如下
085986004801,054K 33562,8,5/17

但是在dataset中的数据编程了如下
"85986004801,5433562,8,5/17"

第二个字符数字发生了改变,求大神支招(急)


...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wym1987 2014-12-31
  • 打赏
  • 举报
回复
以文本形式读取吧,以字符串形式处理就不会有数据混乱问题了,EXCEL数据库如果用混合数据类型存储的话容易读到你不想要的东西
wind_cloud2011 2014-12-31
  • 打赏
  • 举报
回复
你以文本方式读取,试一试: //新建一个datatable用于保存读入的数据 DataTable dt = new DataTable(); //给datatable添加三个列 dt.Columns.Add("aa", typeof(String)); dt.Columns.Add("bb", typeof(String)); dt.Columns.Add("cc", typeof(String)); dt.Columns.Add("dd", typeof(String)); //读入文件 using (StreamReader reader = new StreamReader("1.csv", Encoding.Default)) { //循环读取所有行 while (!reader.EndOfStream) { //将每行数据,用-分割成3段 string[] data = reader.ReadLine().Split(' ');//每行数据之间有一个空格  //新建一行,并将读出的数据分段,分别存入对应的列中,有几列建立几个 DataRow dr = dt.NewRow(); dr[0] = data[0]; dr[1] = data[1]; dr[2] = data[2]; dr[3] = data[3]; //将这行数据加入到datatable中 dt.Rows.Add(dr); } }
xuelang1225 2014-12-31
  • 打赏
  • 举报
回复
OleDbCommand cmd = new OleDbCommand("select CTEXT(F1) as F1, CTEXT(F2) as F2,f3, CTEXT(F4) as F4 from [" + dtname + "]", dbcon); 想到这种办法,但是里面函数如何使用不知道,求教。 比如Ctext换为Convert
hychzdzxa 2014-12-31
  • 打赏
  • 举报
回复
csv文件做为txt文件读,然后保存进数据库,再读成dataset。
xuelang1225 2014-12-31
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
建议你还是用ACCESS之类的真正的数据库文件去增删改查 csv虽然可以作为数据源,但是它毕竟不是数据库
我是把这些数据放入到sql 数据库中,但是放入dataset 时候就有问题 了,你说用文本文档读取是 adapter.Fill(dstable,"txt");这样改代码么?
於黾 2014-12-31
  • 打赏
  • 举报
回复
建议你还是用ACCESS之类的真正的数据库文件去增删改查 csv虽然可以作为数据源,但是它毕竟不是数据库
xuelang1225 2014-12-31
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
如果你仅仅是需要读取csv文件的全部内容,而不是拿它当数据库增删改查的话,完全可以当文本文档读取
就是要增删改查,我是想知道为什么它倒入后数据就改变了,我需要的是导入的dataset以后数据不变,我后面还要用这些数据的,如果改变了后续数据就不正确了。
於黾 2014-12-31
  • 打赏
  • 举报
回复
如果你仅仅是需要读取csv文件的全部内容,而不是拿它当数据库增删改查的话,完全可以当文本文档读取

110,533

社区成员

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

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

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