CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

怎么样把DataDet或DataGrid或DataTable填入数据库 .请看我的代码:

楼主vcforeverya()2005-09-15 14:02:39 在 .NET技术 / ASP.NET 提问

'读Excel表  
                     
    dim   source   As   string="d:\text.xls"  
    Dim   myDataSet   As   new   DataSet()  
    Dim   myOledbConnection   As   OledbConnection=new   OledbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source="+source+";Extended   Properties=Excel   8.0")  
    Dim   myOledbCommand   As   OledbCommand=new   OledbCommand("Select   *   from   [Sheet1$]",myOledbConnection)  
    Dim   myData   As   OledbDataAdapter=new   OledbDataAdapter(myOledbCommand)  
    myData.Fill(myDataSet)  
    DataGrid1.DataSource=myDataSet.Tables(0).DefaultView  
    DataGrid1.DataBind()  
   
                    '写入数据库  
            Dim   table   As   DataTable=myDataSet.Tables(0)  
    dim   changedRow   As   new   Arraylist  
    Dim   row   As   DataRow  
    for   each   row   in   table.Rows  
            if   ((row.RowState)   <>   (DataRowState.Unchanged))   then  
            changedRow.Add(row)  
    end   if  
   
    if   (changedRow.Count=0)   then  
          return  
    end   if  
    next  
   
    dim   Conn   As   SqlConnection=new   SqlConnection("server=localhost;uid=sa;pwd=;database=PhoneOther")  
    Conn.open()  
    Dim   Str   As   String="Select   *   from   Temp"  
    Dim   DataAdapter1   As   SqlDataAdapter=new   SqlDataAdapter(str,Conn)  
    Dim   builder   As   SqlCommandBuilder   =new   SqlCommandBuilder(DataAdapter1)  
    DataAdapter1.UpdateCommand=builder.GetUpdateCommand  
    Dim   rows()   As   DataRow=ctype(changedRow.ToArray(GetType(DataRow)),DataRow())  
    DataAdapter1.Update(rows)  
    Conn.Close()  
    DataAdapter1.Dispose()  
   
   
  读Excel表肯定没有问题,因为DataGrid已经显示了,可是数据库为什么什么东西都没有。我的数据库字段应该怎么设置,如我的表有两个字段W1,和W2,是不是我的数据库也要有两个字段?我应该怎么做?应该注意思什么?  
  问题点数:100、回复次数:14Top

1 楼bizbuy(也曾风流)回复于 2005-09-15 14:28:00 得分 10

数据库一个表里面有相应的字段就好  
  你写入的时候,要循环一下,for   eachTop

2 楼vcforeverya()回复于 2005-09-15 14:39:44 得分 0

没错我的数据库里就是相应字段。Top

3 楼GDNPC(烟锁池塘柳,炮镇海城楼)回复于 2005-09-15 14:44:27 得分 10

private   void   SaveChanges()  
          {  
                  DataTable   table   =   (DataTable)DataGrid.DataSource;  
                  ArrayList   changedRow;  
                  DataRow   row;  
                  ForEach(row   In   table.Rows)  
                      {  
                          If(row.RowState   !=   DataRowState.Unchanged)  
                                  changedRow.Add(row);  
                         
                          If(changedRow.Count   ==   0)  
                                  Return;  
                        }  
                  conn.Open();  
                  string   str;  
                  str   =   "SELECT   *   FROM   *";     //返回数据库的结构  
                  SqlDataAdapter   adapter   =   New   SqlDataAdapter(str,   conn);  
                  SqlCommandBuilder   builder   =   New   SqlCommandBuilder(adapter);  
                  adapter.UpdateCommand   =   builder.GetUpdateCommand;  
                  DataRow   rows   =   (DataRow)(changedRow.ToArray(GetType(DataRow)));  
                  adapter.Update(rows);  
                  conn.Close();  
                  adapter.Dispose();  
        }  
  以上是万用代码,代入就可以了  
  Top

4 楼xcz1943(小钊)回复于 2005-09-15 14:44:51 得分 10

我不会用Sql之外的数据库Top

5 楼vcforeverya()回复于 2005-09-15 14:47:23 得分 0

GDNPC(烟锁池塘柳,炮镇海城楼)   (   )   信誉:100    
  ==  
  我的和你的没什么区别,只是一个C#代码,一个VB代码。Top

6 楼lovelxj(伊斯人,吾谁与归)回复于 2005-09-15 14:48:04 得分 10

DATASET   可以批量更新  
    或者自己循环判断每行   再更新也可以Top

7 楼vcforeverya()回复于 2005-09-15 14:48:48 得分 0

而且我读Excel表那部分代码没有问题,DataGrid已经可以显示了。Top

8 楼wangyanyan(时间是挤出来的)回复于 2005-09-15 14:57:51 得分 10

你可以把DataTable打开,一行一行地写进去。试一下Top

9 楼GDNPC(烟锁池塘柳,炮镇海城楼)回复于 2005-09-15 15:03:22 得分 10

GDNPC(烟锁池塘柳,炮镇海城楼)   (   )   信誉:100    
  ==  
  我的和你的没什么区别,只是一个C#代码,一个VB代码。  
   
  楼主试试把这句去掉,或许就可以了。  
  If(changedRow.Count   ==   0)  
                                  Return;  
                         
  这段代码是书上的,没记错的话好像是外国人写的vb.net高级编程,清华大学出版社红色封面那个系列Top

10 楼vcforeverya()回复于 2005-09-15 15:14:01 得分 0

If(changedRow.Count   ==   0)  
                                  Return;  
  报错  
   
   
  对于不返回任何键列信息的   SelectCommand,不支持   UpdateCommand   的动态   SQL   生成。    
  Top

11 楼GDNPC(烟锁池塘柳,炮镇海城楼)回复于 2005-09-15 15:17:05 得分 10

我以前用的也是vb的那个版本,回答问题需要就把它翻译成c#了,所以c#能不能用我还没测试过。但vb那个版本有时的确不好使,但把return去掉就好用了。Top

12 楼vcforeverya()回复于 2005-09-15 15:34:31 得分 0

还有我的第一句是这样写的:  
  Dim   table   As   DataTable=myDataSet.Tables(0)  
  但是要像如下这么写就不对:  
  Dim   table   As   DataTable=CType(DataGrid1.DataSource,DataTable)这样写就不对。Top

13 楼wangyanyan(时间是挤出来的)回复于 2005-09-16 10:23:35 得分 10

为什么不改成C#的代码试一试Top

14 楼wangyanyan(时间是挤出来的)回复于 2005-09-16 10:24:29 得分 20

你的代码我看不出有什么问题?Top

相关问题

  • 在DataSet中填入DataTable的问题(初级问题)
  • 请教,DATAGRID如何填入一个图骗
  • DataTable到DataGrid
  • 在VB.NET实现将DataTable到数据填入Excel模板的指定位置,新手求救!
  • 在VB.NET实现将DataTable里的数据填入到Excel模板的指定位置,新手求救!
  • 我用datatable填充datagrid。。。。。(一定给分!!)
  • 【菜鸟请教】关于DataGrid和DataTable的...
  • 请问如何用DATAGRID来更新DATATABLE???
  • 菜鸟100分求救,datatable,datagrid相关
  • 求教!winform下dataGrid绑定dataTable,在dataTable上添加一条row,让dataGrid指在这条row上

关键词

  • c#
  • 代码
  • 数据库
  • 字段
  • datagrid
  • excel
  • vb
  • source
  • changedrow
  • datatable

得分解答快速导航

  • 帖主:vcforeverya
  • bizbuy
  • GDNPC
  • xcz1943
  • lovelxj
  • wangyanyan
  • GDNPC
  • GDNPC
  • wangyanyan
  • wangyanyan

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo