怎么样把DataDet或DataGrid或DataTable填入数据库 .请看我的代码:
'读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上




