如何读取文本文件填充入datagrid?(不经过数据库!)

scorpion007 2005-06-13 10:44:53
我有个项目需要上传文本文件然后导入数据库。
但是要求先显示上传的文本文件,确定后再导入数据库。
但是由于不能独占表,所以不能使用bulk insert来导入。
也不能使用bcp...!
这样只能使用insert into.
但是由于同时间可能上传的人多,
而且文件大小各异,所以我的想法是这样的
通过建立dataset的datatable,导入文本文件到datatable然后绑定显示,点击确定后调用update把数据更新入数据库。
不知道这样的想法是否正确?
问题是我找不到任何的方法将文本文件导入到datatable而不需要经过数据库这一步。。。
我察看了有excel的导入等等,但是不行。不能把文本文件转换为excel,因为excel有上限限制
最多数据只能为6万多条,但是我的数据可能有10万条甚至更多,所以只能使用文本文件。
希望各位高手指点一下,最好有思路和介绍。。。不胜感激!
如果分数不够,我还可以再加
这里先谢谢各位了!



...全文
252 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
scorpion007 2005-06-14
  • 打赏
  • 举报
回复
谢谢
net_lover(孟子E章)
解决这个问题了
我专门查询了一下关于这方面的资料,原来在这里。
http://www.connectionstrings.com/
不过还是感谢net_lover(孟子E章)
附上分数!
还有就是我现在在使用了查询文本文件绑定datagrid后出现的其他问题,不知道可否帮忙解决。谢谢
http://community.csdn.net/Expert/topic/4081/4081010.xml?temp=.1103784
东风E9527 2005-06-14
  • 打赏
  • 举报
回复
mark
liubiqu 2005-06-13
  • 打赏
  • 举报
回复
总体思路是 先把文件读到DataSet或者DataTable然后再绑定DataGrid
如果文件是Xml文件就比较方便了,DataSet直接可以支持XML导入的方式。具体的Demo看MSDN吧
  • 打赏
  • 举报
回复
看看这样行不行:

客户端通过WEB界面的输入,再利用IO对象在目录中生成.txt文件,页面load时,读出每个文件的指定格式,通过datatable,将.txt中的内容添加到datatable中。

在创建一个dataset,将此datatable加入dataset中,在绑定到datagrid.
dim myDataSet = New DataSet()
myDataSet.Tables.Add(表名)
yes4pierce 2005-06-13
  • 打赏
  • 举报
回复
用update更新数据库,原理也是建一个trasaction,然后每条记录insert,完成后Commit;所以也可以手工完成。如果多用户操作相同表,那么还要考虑数据完整的问题,处理多用户并发操作。
孟子E章 2005-06-13
  • 打赏
  • 举报
回复
也可以

Private Sub Read_File()
Dim dTable As New DataTable
Dim Reader As New StreamReader("foo.txt")
Dim sLine As String = Reader.ReadLine()
Dim sVals(), sVal As String
Dim i, j As Integer

i = 0
While Not (sLine Is Nothing)
sVals = Split(sLine, ",")
If i = 0 Then
For Each sVal In sVals
dTable.Columns.Add(sVal)
Next
Else
'dTable.Rows(i - 1).ItemArray = sVals
dTable.Rows.Add(sVals)
End If
sLine = Reader.ReadLine()
i = i + 1
End While

DataGrid1.DataSource = dTable
End Sub
yes4pierce 2005-06-13
  • 打赏
  • 举报
回复
在内存建立一个datatable,定以好列,然后解析上传得文本文件,加入到datatable中,是不需要数据库的。
孟子E章 2005-06-13
  • 打赏
  • 举报
回复
可以把文本文件看成数据源直接绑定
孟子E章 2005-06-13
  • 打赏
  • 举报
回复
DataGrid绑定txt文件的例子
ReportFile.txt

姓名,学号,成绩
net_lover,10000,9999999
net_lover,20000,9999999
net_lover,30000,9999999
net_lover,40000,9999999


a.aspx
==============
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
string ConnectionString;
string SQLString;
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".") + ";Extended Properties=\"Text;HDR=yes;FMT=Delimited\"";
SQLString = "Select * from ReportFile.txt";
System.Data.OleDb.OleDbConnection ConnectionText = new System.Data.OleDb.OleDbConnection();
ConnectionText.ConnectionString = ConnectionString;
ConnectionText.Open();
System.Data.OleDb.OleDbDataAdapter AdapterText = new System.Data.OleDb.OleDbDataAdapter(SQLString, ConnectionText);
System.Data.DataSet DataSetText = new System.Data.DataSet("TextFiles");
AdapterText.Fill(DataSetText, "TextFile");
DataGrid1.DataSource = DataSetText;
DataGrid1.DataBind();
ConnectionText.Close();
}
</script>
</head>
<body>
<form runat="server">
<asp:DataGrid id="DataGrid1" runat="server"/>
</form>
</body>
</html>

放在同一文件夹下即可访问


lemong 2005-06-13
  • 打赏
  • 举报
回复
可以使用xml文件,看看msdn里关于xmldocument部分的东西,可能有帮助.
delphiseabird 2005-06-13
  • 打赏
  • 举报
回复
读到datatable中再绑定到datagrid


---------------------------------------

              欢迎访问 http://www.coderpub.com 技术论坛
delphi,asp.net,C#,j2me,软件工程,企业管理
scorpion007 2005-06-13
  • 打赏
  • 举报
回复
net_lover(孟子E章)
你好,谢谢你的回答
我看了之后由于对vb.net不是很熟
所以我说说我对你的回答的认为
看看是否有何不妥。
你这里是否是使用数组来绑定当作数据源?
然后使用Split来分割数据。

Dim i, j As Integer
你这里分别定义了i和j,为何没有j?

dTable.Rows(i - 1).ItemArray = sVals
这一句话是什么意思呢?(是否增加行数?)

不好意思,我对vb.net也仅仅根据相关的c#知识推导出来,如果不对请指教!
最好可否用C#填写,唉!这里先感谢net_lover(孟子E章) .
附带:请问你是否查找msdn来寻找的相关资料?我查询了msdn都没有关于使用文本文件当作数据源的资料。
为了一劳永逸,我还是想查询msdn来寻找帮助,不知net_lover(孟子E章) 可否告知使用文本文件的当做数据源的资料网址
谢谢!这里也感谢其他人对小弟的回答
不胜感激!
解决问题后即刻送分,谢谢!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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