我没用dategrid,只用了dataset,把datarow的内容填到了textbox中,修改textbox后,如何更新数据库呢?

解决方案 »

  1.   

    你是用DataAdapter向DataSet中填充数据吧
    DataAdapter 除了fill()方法还有一个update()方法了
    下面主要讲下方法了
    假设有一个DataAdapter da
    fill方法是要配合da.selectcommand = SQLCommand (你的查询语句 command)
    而update()呢要配合deletecommand updatecommand insertcommand 三条语句了
    da.deletecommand
    如果你配置了这三条语句,那么就可以调用da.update(yourDataSet)。呵呵试试看了
      

  2.   

    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdatacommondataadapterclassfilltopic.htm
    DataAdapter.Fill 方法  [C#]请参见
    DataAdapter 类 | DataAdapter 成员 | System.Data.Common 命名空间 | FillSchema | 代码:用数据填充数据表 (Visual Basic) | DataAdapter 成员(Visual J# 语法) | C++ 托管扩展编程 
    要求
    平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
    语言
    C#C++JScriptVisual Basic全部显示
    在 DataSet 中添加或刷新行以匹配使用 DataSet 名称的数据源中的行,并创建一个名为“Table”的 DataTable。[Visual Basic]
    Public MustOverride Function Fill( _
       ByVal dataSet As DataSet _
    ) As Integer Implements IDataAdapter.Fill[C#]
    public abstract int Fill(
       DataSet dataSet
    );[C++]
    public: virtual int Fill(
       DataSet* dataSet
    ) = 0;[JScript]
    public abstract function Fill(
       dataSet : DataSet
    ) : int;参数
    dataSet 
    要用记录和架构(如果必要)填充的 DataSet。 
    返回值
    已在 DataSet 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。实现
    IDataAdapter.Fill备注
    Fill 方法使用关联的 SelectCommand 属性所指定的 SELECT 语句从数据源中检索行。与 SELECT 语句关联的连接对象必须有效,但不需要将其打开。如果调用 Fill 之前连接已关闭,则将其打开以检索数据,然后再将其关闭。如果调用 Fill 之前连接已打开,它将保持打开状态。然后,Fill 操作将行添加到 DataSet 中的目标 DataTable 对象,如果 DataTable 对象不存在,则创建这些对象。当创建 DataTable 对象时,Fill 操作通常只创建列名元数据。但是,如果 MissingSchemaAction 属性设置为 AddWithKey,则还会创建适当的主键和约束。如果 SelectCommand 返回 OUTER JOIN 的结果,则 DataAdapter 不为生成的 DataTable 设置 PrimaryKey 值。必须显式定义主键,确保正确地解析重复行。有关更多信息,请参见为表定义主键。如果数据适配器在填充 DataTable 时遇到重复列,它将以“columnname1”、“columnname2”、“columnname3”这种模式命名后面的列。如果传入数据包含未命名的列,它们将按“Column1”、“Column2”的模式放在 DataSet 中。向 DataSet 添加多个结果集时,每个结果集都放在一个单独的表中。将整数值追加到指定的表名从而对其他结果集进行命名(例如“Table”、“Table1”、“Table2”等)。在应用程序中使用列名和表名时应小心,一定不要与这些命名模式发生冲突。当用于填充 DataSet 的 SELECT 语句(例如批处理 SQL 语句)返回多项结果时,如果其中一项结果包含错误,则将跳过所有后面的结果并且不将其添加到 DataSet 中。您可以在同一个 DataTable 上多次使用 Fill 方法。如果主键存在,则传入行会与已有的匹配行合并。如果主键不存在,则传入行会追加到 DataTable 中。注意   当处理返回多项结果的批处理 SQL 语句时,用于 OLE DB 的 .NET Framework 数据提供程序的 FillSchema 的实现只为第一项结果检索架构信息。若要为多项结果检索架构信息,请使用 MissingSchemaAction 设置为 AddWithKey 的 Fill。
      

  3.   

    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdatacommondataadapterclassupdatetopic.htm上面是fill方法,这里是update方法。自己看MSDN library了示例
    [Visual Basic, C#] 以下示例使用派生类 OleDbDataAdapter 来对数据源进行 Update。
    [Visual Basic] 
    Public Function CreateCmdsAndUpdate(myDataSet As DataSet, myConnection As String, mySelectQuery As String, myTableName As String) As DataSet
        Dim myConn As New OleDbConnection(myConnection)
        Dim myDataAdapter As New OleDbDataAdapter()
        myDataAdapter.SelectCommand = New OleDbCommand(mySelectQuery, myConn)
        Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)    myConn.Open()    Dim custDS As DataSet = New DataSet
        myDataAdapter.Fill(custDS)    ' Code to modify data in DataSet here     ' Without the OleDbCommandBuilder this line would fail.
        myDataAdapter.Update(custDS)    myConn.Close()    CreateCmdsAndUpdate = custDS
    End Function 'SelectOleDbSrvRows
    [C#] 
    public DataSet CreateCmdsAndUpdate(DataSet myDataSet,string myConnection,string mySelectQuery,string myTableName) 
    {
        OleDbConnection myConn = new OleDbConnection(myConnection);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
        myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
        OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);    myConn.Open();    DataSet custDS = new DataSet();
        myDataAdapter.Fill(custDS);    //code to modify data in dataset here    //Without the OleDbCommandBuilder this line would fail
        myDataAdapter.Update(custDS);    myConn.Close();    return custDS;
     }
      

  4.   

    出现下面的错误信息,怎么回事啊:
    “/zongtibu”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 208:// dr["Saturday"]=TextBox_Sat.Text.ToString();
    行 209:// dr["Sunday"]=TextBox_Sun.Text.ToString();
    行 210: da1.UpdateCommand = new OleDbCommand("UPDATE 表1 SET Monday = 'aaa' " +
    行 211: "WHERE ID = '1' AND xinghao='HQ7'" ,cnn);
    行 212:
     
    程序代码如下:
    private void Button_Modify_Click(object sender, System.EventArgs e)
    {
    da1.UpdateCommand = new OleDbCommand("UPDATE 表1 SET Monday = 'aaa' " +
    "WHERE ID = '1' AND xinghao='HQ7'" ,cnn); da1.Update(ds1);
    }
    大虾帮我看看怎么回事啊,多谢了!