winform程序:
显示数据的代码如下:this.gridView1.DataSource=getDataView();//用的是XtraGrid
更新的代码:DataView dv=(DataView)this.gridView1.DataSource;//XtraGrid取出后的数据源一定是DataView
//--------请问下面怎么更新?msdn上有用DataSet的例子,但是我这里没有DataSet.本人刚接触C#不久。

解决方案 »

  1.   

    Google的浏览器速度好快,而且上csdn不会白屏。
      

  2.   

    DataView dv = new DataView();
    dv.Table.Rows[X][Y].ToString();X Y 代表定义变量。用FOR循环插入数据库。不知道能不能解决。
      

  3.   


    这么麻烦?请问用DbAdapter怎么弄啊??
      

  4.   

    写个基类,根据DataTable的RowState自动生成SQL,我一般都这么干~
      

  5.   

    我看msdn上是用dbadapter 的,怎么做?但是 msdn 上的是dataset
      

  6.   

    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();
            }
      

  7.   

    这么调用:            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的类~我一般都这么用~
      

  8.   

    是SqlDataAdapter,SqlDataAdapter继承自DbDataAdapter。
    不同的数据库要用不同的DbDataAdapter实现类。
      

  9.   

    你先设置SqlDataAdapter的UpdateCommand ,InsertCommand ,DeleteCommand ,然后调用SqlDataAdapter.Update(dv.Table)这样它就自动实现你的更新插入了。