'读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,是不是我的数据库也要有两个字段?我应该怎么做?应该注意思什么?
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,是不是我的数据库也要有两个字段?我应该怎么做?应该注意思什么?
解决方案 »
- 使用异步操作实现注册
- Repeater表头排序
- 收听验证码是怎么实现的?
- float a = Convert.ToInt32(reader[0]);和float a = reader.GetFloat(0);一个可以一个不行,缘何?
- !!!!??-工程文件连接错误
- 实现思路请教!
- 在服务器端调用Excel生成Excel文件,最后不能关闭Excel进程。
- 求助: 关于C# 导出Excel 文件的效率问题
- wmv的视频在本地服务器是可以播放的,到了网上的服务器就不可以了
- 初学者,请教大家个问题
- 老出现“已有打开的DataReader必须先将它关掉”,检查了,也没找到,我怎么写代码看到当前没关闭的连接是哪一个呢?
- 急招asp.net(c#)程序员(石家庄)
你写入的时候,要循环一下,for each
{
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();
}
以上是万用代码,代入就可以了
==
我的和你的没什么区别,只是一个C#代码,一个VB代码。
或者自己循环判断每行 再更新也可以
==
我的和你的没什么区别,只是一个C#代码,一个VB代码。楼主试试把这句去掉,或许就可以了。
If(changedRow.Count == 0)
Return;
这段代码是书上的,没记错的话好像是外国人写的vb.net高级编程,清华大学出版社红色封面那个系列
Return;
报错
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
Dim table As DataTable=myDataSet.Tables(0)
但是要像如下这么写就不对:
Dim table As DataTable=CType(DataGrid1.DataSource,DataTable)这样写就不对。