请问怎么把dataviewb保存到数据库中??

stop__ 2008-09-06 09:17:48
winform程序:
显示数据的代码如下:

this.gridView1.DataSource=getDataView();//用的是XtraGrid


更新的代码:

DataView dv=(DataView)this.gridView1.DataSource;//XtraGrid取出后的数据源一定是DataView


//--------请问下面怎么更新?msdn上有用DataSet的例子,但是我这里没有DataSet.本人刚接触C#不久。

...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
格拉 2008-09-08
  • 打赏
  • 举报
回复
接分
蓝色木 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lye2000000_super 的回复:]
你先设置SqlDataAdapter的UpdateCommand ,InsertCommand ,DeleteCommand ,然后调用SqlDataAdapter.Update(dv.Table)这样它就自动实现你的更新插入了。
[/Quote]

这个思路应该是正确的
  • 打赏
  • 举报
回复
你先设置SqlDataAdapter的UpdateCommand ,InsertCommand ,DeleteCommand ,然后调用SqlDataAdapter.Update(dv.Table)这样它就自动实现你的更新插入了。
kbryant 2008-09-08
  • 打赏
  • 举报
回复
帮顶~~
stop__ 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jerryma888888 的回复:]
仅用dbadapter还真不知道该如何做。
dbadapter只是提供了一个.fill()方法把数据源和dataset联系在一起。

顶起来。。。
[/Quote]
是SqlDataAdapter,SqlDataAdapter继承自DbDataAdapter。
不同的数据库要用不同的DbDataAdapter实现类。
jerryma888888 2008-09-07
  • 打赏
  • 举报
回复
仅用dbadapter还真不知道该如何做。
dbadapter只是提供了一个.fill()方法把数据源和dataset联系在一起。

顶起来。。。
stop__ 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cpw999cn 的回复:]
其实用那个还不如自己写个遍历DataTable的类来生成上传语句
[/Quote]
谢谢,为什么不如自己写个遍历?
感觉你说得也对,那个不同的数据库还要调用不同的类。
cpw999cn 2008-09-07
  • 打赏
  • 举报
回复
这么调用:

for (int i = 0; i < this.Rows.Count; i++)
{
DataRow r = this.Rows[i];
switch (r.RowState)
{
case DataRowState.Deleted:
if (PublicUpdateDataBaseEvents(r))
continue;
sql.Append(SQLBuilder.GetDeleteSql(r));
r.AcceptChanges();
i--; //删除时,此行调用AcceptChanges后已从集合中删除,所以索引需要-1。
break;
case DataRowState.Added:
if (PublicUpdateDataBaseEvents(r))
continue;
sql.Append(SQLBuilder.GetInsertSql(r));
r.AcceptChanges();
break;
case DataRowState.Modified:
if (PublicUpdateDataBaseEvents(r))
continue;
sql.Append(SQLBuilder.GetUpdateSql(r));
r.AcceptChanges();
break;
}
}

this是一个继承了DataTable的类~我一般都这么用~
cpw999cn 2008-09-07
  • 打赏
  • 举报
回复
msdn上用的是command生成器,其实用那个还不如自己写个遍历DataTable的类来生成上传语句
例如:

/// <summary>
/// 生成删除语句。
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
public static string GetDeleteSql(DataRow row)
{
if (row.Table.PrimaryKey == null || row.Table.PrimaryKey.Length == 0)
{
throw new Exception("SQLBuilder:没有定义主键,无法生成删除语句!");
}
StringBuilder sql = new StringBuilder();
sql.AppendFormat("delete from {0} where 1=1", row.Table.TableName);
foreach (DataColumn dc in row.Table.PrimaryKey)
{
if (row.IsNull(dc, DataRowVersion.Original))
{
sql.AppendFormat(" and {0} is null", dc.ColumnName);
continue;
}
if (dc.DataType == typeof(int) || dc.DataType == typeof(decimal) ||
dc.DataType == typeof(float) || dc.DataType == typeof(double) ||
dc.DataType == typeof(byte))
{
sql.AppendFormat(" and {0}={1}", dc.ColumnName, row[dc, DataRowVersion.Original]);
}
else if (dc.DataType == typeof(string) || dc.DataType == typeof(DateTime) ||
dc.DataType == typeof(char))
{
sql.AppendFormat(" and {0}='{1}'", dc.ColumnName, FilterValue(row[dc, DataRowVersion.Original]));
}
else
{
throw new Exception("SQLBuilder.GetDeleteSql:未知的数据类型,无法生成删除语句!");
}
}
sql.Append(";");
return sql.ToString();
}
stop__ 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cpw999cn 的回复:]
写个基类,根据DataTable的RowState自动生成SQL,我一般都这么干~
[/Quote]
我看msdn上是用dbadapter 的,怎么做?但是 msdn 上的是dataset
周公 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jerryma888888 的回复:]
DataView dv = new DataView();
dv.Table.Rows[X][Y].ToString();

X Y 代表定义变量。用FOR循环插入数据库。

不知道能不能解决。
[/Quote]

这个是可以的。
cpw999cn 2008-09-07
  • 打赏
  • 举报
回复
写个基类,根据DataTable的RowState自动生成SQL,我一般都这么干~
stop__ 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jerryma888888 的回复:]
DataView dv = new DataView();
dv.Table.Rows[X][Y].ToString();

X Y 代表定义变量。用FOR循环插入数据库。

不知道能不能解决。
[/Quote]

这么麻烦?请问用DbAdapter怎么弄啊??
jerryma888888 2008-09-07
  • 打赏
  • 举报
回复
DataView dv = new DataView();
dv.Table.Rows[X][Y].ToString();

X Y 代表定义变量。用FOR循环插入数据库。

不知道能不能解决。

stop__ 2008-09-06
  • 打赏
  • 举报
回复
Google的浏览器速度好快,而且上csdn不会白屏。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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