您的位置:程序门 -> .net技术 -> vb.net



请教数组的值赋给数据库表??


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教数组的值赋给数据库表??[已结贴,结贴人:szyyx]
发表于:2007-10-06 20:04:51 楼主
我要做的一个从文本文件(以( ¦)符分隔)导入到vb.net2003   dataset数据库,是先读取一条记录,查找分隔符,把每一个字段存到一个数组里,然后再把数组的值赋给数据库表的每一个字段,我文本数据比较多(几万条),但不知怎么赋值,不知道哪位高手有这方面的好方法,能够指点小弟几招,小弟不胜感激。   下面上代码:请高手帮我改一下?

dim   dt   as   new   datatable
                dt.columns.add(new   datacolumn("dept"))
                dt.columns.add(new   datacolumn("sqeitem")
                dt.columns.add(new   datacolumn("itemcode")
                dt.columns.add(new   datacolumn("lpp")
                dt.columns.add(new   datacolumn("nsp")
                dim   dr   as   datarow   =   dt.newrow
                dim   mylinestr(),   a(1)   as   string这里数组也有问题?
                dim   myline   as   string
                dim   r   as   system.io.streamreader   =   new   system.io.streamreader("d:\test.txt",   system.text.encoding.default)
                myline   =   r.readline
                do   while   not   (myline   is   nothing)
                        mylinestr   =   myline.split(" ¦")
                        dt.rows.add(??????)这里就不知怎么把数组的值赋给数据库表的每一个字段了?
                loop
                dim   mydataset   as   dataset   =   new   dataset
                datagrid1.datasource   =   dt

下面是test文本文件内容:

10   |000001   |0000001   |1.85   |1.5705   |  
10   |000006   |0000002   |1.9   |1.5555   |  
10   |000020   |0000003   |1.9   |1.5705   |  
10   |000077   |0000004   |1.9   |1.5555   |  
10   |000086   |0000005   |11.2   |8.9743   |  
10   |000109   |0000006   |2   |1.5705   |  


发表于:2007-10-06 23:50:171楼 得分:0
大致改了下,测试通过,楼主试下吧

c# code
dim dt as new datatable dt.columns.add(new datacolumn("dept")) dt.columns.add(new datacolumn("sqeitem")) dt.columns.add(new datacolumn("itemcode")) dt.columns.add(new datacolumn("lpp")) dt.columns.add(new datacolumn("nsp")) dim dr as datarow = dt.newrow dim mylinestr(5) as string dim myline as string dim i as integer dim r as system.io.streamreader = new system.io.streamreader("d:\test.txt", system.text.encoding.default) while not r.readline() is nothing dim row as datarow = dt.newrow mylinestr = r.readline().trimend("|").split("|") for i = 0 to mylinestr.length - 1 row(i) = mylinestr(i) next dt.rows.add(row) end while dim mydataset as dataset = new dataset datagrid1.datasource = dt


新版中好像编码转换了,这里分割时用的“ ¦”可能与你的实际文件中的不一样,根据实际情况自己换下吧
发表于:2007-10-06 23:51:542楼 得分:0
-_-#,习惯性的选了c#

vb.net code
dim dt as new datatable dt.columns.add(new datacolumn("dept")) dt.columns.add(new datacolumn("sqeitem")) dt.columns.add(new datacolumn("itemcode")) dt.columns.add(new datacolumn("lpp")) dt.columns.add(new datacolumn("nsp")) dim dr as datarow = dt.newrow dim mylinestr(5) as string dim myline as string dim i as integer dim r as system.io.streamreader = new system.io.streamreader("d:\test.txt", system.text.encoding.default) while not r.readline() is nothing dim row as datarow = dt.newrow mylinestr = r.readline().trimend("|").split("|") for i = 0 to mylinestr.length - 1 row(i) = mylinestr(i) next dt.rows.add(row) end while dim mydataset as dataset = new dataset datagrid1.datasource = dt
发表于:2007-10-07 00:11:363楼 得分:0
datarow   有itemarray   属性
vb.net code
dim dt as new datatable dt.columns.add(new datacolumn("dept")) dt.columns.add(new datacolumn("sqeitem") dt.columns.add(new datacolumn("itemcode") dt.columns.add(new datacolumn("lpp") dt.columns.add(new datacolumn("nsp") dim dr as datarow = dt.newrow dim mylinestr(), a(1) as string这里数组也有问题? dim myline as string dim r as system.io.streamreader = new system.io.streamreader("d:\test.txt", system.text.encoding.default) myline = r.readline do while not (myline is nothing) mylinestr = myline.split(" ¦") dt.rows.add(??????)这里就不知怎么把数组的值赋给数据库表的每一个字段了? --> dim dr as datarow dr=dt.newrow dr.itemarray = mylinestr dt.rows.add(dr) loop dim mydataset as dataset = new dataset datagrid1.datasource = dt
发表于:2007-10-07 08:30:044楼 得分:0
我文本数据比较多(几万条)
-------------
又看了下,如果是这样的话,最好是先把文本文件导入到数据库中,再进行操作,数据量大,直接操作不灵活,而且效率低
发表于:2007-10-08 03:17:235楼 得分:0
mylinestr   =   r.readline().trimend(" ¦").split(" ¦")这里还不行,文本如下格式就不能转换成" ¦"了
"10","000001","0000001","1.85","1.5705"
"10","000006","0000002","1.9","1.5555"
"10","000020","0000003","1.9","1.5705"
发表于:2007-10-08 08:51:226楼 得分:0
-_-#,楼主还是先找本基础的书看下吧

文本的分割符还不固定吗?
内容是你顶楼那种形式的就用
mylinestr   =   r.readline().trimend("|").split("|")
5楼这种形式的就用
mylinestr   =   r.readline().trimend(",").split(",")
把代码里的分割符就换成现在文本的分割符,如果可能为多种分割符,先用if判断一下,然后给mylinestr赋值

如果你再说类似于下面这种形式又不能用了,那我就真的无语了
"10"   "000001"   "0000001"   "1.85"   "1.5705"


数据量大就先导入数据库再操作,直接读取处理不灵活,效率也低
发表于:2007-10-08 09:41:247楼 得分:0
mark
发表于:2007-10-09 01:27:248楼 得分:0
不好意思,还差一点点就ok了,可能我没有说清楚,我的意是说把下面的文本的(双引号和逗号去掉,逗号换成( ¦)符号分割就可以了.
"10","000001","0000001","1.85","1.5705"  
"10","000006","0000002","1.9","1.5555"  
"10","000020","0000003","1.9","1.5705"  

换后格式如下:
 
 
10 ¦000001 ¦0000001 ¦1.85 ¦1.5705
10 ¦000006 ¦0000002 ¦1.9 ¦1.5555
10 ¦000020 ¦0000003 ¦1.9 ¦1.5705
发表于:2007-10-09 08:31:449楼 得分:50
把“"”replace掉,然后按“,”分割就行了,没必要再替换成“ ¦”了

vb.net code
dim dt as new datatable dt.columns.add(new datacolumn("dept")) dt.columns.add(new datacolumn("sqeitem")) dt.columns.add(new datacolumn("itemcode")) dt.columns.add(new datacolumn("lpp")) dt.columns.add(new datacolumn("nsp")) dim dr as datarow = dt.newrow dim myline as string dim mylinestr(5) as string dim r as system.io.streamreader = new system.io.streamreader("d:\test.txt", system.text.encoding.default) while r.peek > -1 dim row as datarow = dt.newrow myline = r.readline().replace("""", "") mylinestr = myline.trimend(",").split(",") row.itemarray = mylinestr dt.rows.add(row) end while datagrid1.datasource = dt
发表于:2007-10-09 23:59:3110楼 得分:0
谢谢,ok了
发表于:2007-10-10 01:10:0811楼 得分:0
能不能再直接写到sql数据库里的相应的表里.
dim   sql   as   string

                dim   oleadapt   as   oledbdataadapter   =   new   oledbdataadapter
                sql   =   "insert   dpdm(dept,sqeitem,itemcode,lpp,nsp)values()赋给数据库表的每一个字段行"
                oleadapt.insertcommand   =   new   oledbcommand(sql,   conn)
                oleadapt.insertcommand.EXECutenonquery()
发表于:2007-10-10 02:44:2012楼 得分:0
能不能再直接写到sql数据库里的相应的表里.  
dim   myline   as   string
                dim   mylinestr(5)   as   string
                dim   r   as   system.io.streamreader   =   new   system.io.streamreader("d:\test.txt",   system.text.encoding.default)
                while   r.peek   >   -1

                        myline   =   r.readline().replace(""",""",   " ¦").replace("""",   "")
                        mylinestr   =   myline.trimend(" ¦").split(" ¦")
                                            sql   =   "insert   dpdm(dept,sqeitem,itemcode,lpp,nsp)values('"   &   mylinestr(0)&   "','"   &   mylinestr(1)&   "','"   &   mylinestr(2)&   "','"   &   mylinestr(4)&   "','"   &   mylinestr(5)   &   "')"这里不能赋给数据库表的每一个字段行"   不知道为什么?

                end   while

                dim   oleadapt   as   oledbdataadapter   =   new   oledbdataadapter
                oleadapt.insertcommand   =   new   oledbcommand(sql,   conn)
                oleadapt.insertcommand.EXECutenonquery()


快速检索

最新资讯
热门点击