【问题标题】:How I can save the data from GridView to the database?如何将数据从 GridView 保存到数据库?
【发布时间】:2011-10-26 08:35:38
【问题描述】:

我正在开发一个 ASP.Net C# Web 应用程序,它包含一个 GridView 来显示我的数据库中某个表的记录,我使用 ODBC Connection 连接到它,并使用 DataSet 在其中保存数据并进行编辑,然后我应该使用 DataSet 中所做的更改将数据保存到数据库中。

我可以使用 OdbcDataAdapter 的 fill() 方法成功访问数据库,并且可以进行数据绑定,以便在 GridView 中查看数据。

我的问题是,当任何更新或更改完成时,如何将 gridview 保存到数据集,然后保存到数据库中[之前完成的操作反之亦然]?

我在 Web 表单类中使用的示例代码如下:-

 private void SelectFromDatabase()
        { 

            string OdbcConnectionString1     = getConnectionString();

            OdbcConnection OdbcConnection1   = new OdbcConnection(OdbcConnectionString1);

            string OdbcSelectText1 = "SELECT * FROM table";

            OdbcCommand OdbcSelectCommand1   = new OdbcCommand(OdbcSelectText1, OdbcConnection1);

            OdbcDataAdapter OdbcDataAdapter1 = new OdbcDataAdapter();

            try
            { 

                OdbcConnection1.Open();                

                OdbcDataAdapter1.SelectCommand           = OdbcSelectCommand1;

                OdbcDataAdapter1.AcceptChangesDuringFill = true;

                int FillResult                           = OdbcDataAdapter1.Fill(myDataSet, TableName);

                myDataSet.AcceptChanges();

                fillGridViewbyDataset(myGridView, myDataSet, TableName);

                Response.Write("<br/>SelectFromDatabase() Fill Result: " + FillResult);

            } 

            catch (Exception Exception1)
            { 
                Response.Write("<br/> SelectFromDatabase() Exception: " + Exception1.Message);
            } 

            finally
            { 
                OdbcConnection1.Close();
            } 

        } 

private void fillGridViewbyDataset(GridView gv, DataSet ds, string dt)
{ 
    gv.DataSource = ds;
    gv.DataMember = dt;

    gv.DataBind();
}

what I need is something like:-

how to save Gridview to the DataSet then save the DataSet to the database as i got the gridview updates but the database still without any updates !!

如果我有一个名为 myDs 的数据集,并且我通过在如下循环中直接访问来编辑其中的字段:-

for (int i = 0; i < myDS.Tables[TableName].Rows.Count; i++)
{
//some function or web method to get the id value of the record being updated
int n = getNewNumber();

//updating the dataset record according to some condition
if (n == 0)
{
myDS.Tables[TableName].Rows[i]["id"] = n;
myDS.Tables[TableName].Rows[i]["description"] = "some data";
}
else
{
myDS.Tables[TableName].Rows[i]["id"] = n;
myDS.Tables[TableName].Rows[i]["description"] = "new data";
}

}

我如何在数据库中完成这些更改,因为我在执行 databind() 时可以在 GridView 中看到它,但数据库不受影响,我尝试使用 OdbcDataAdapter 和 OdbcCommandBuilder 的填充和更新方法??

这很紧急,因为我在开发一个重要的应用程序时需要它..

提前感谢您的回复和回答.....

【问题讨论】:

    标签: c# asp.net gridview dataset dataadapter


    【解决方案1】:

    您需要了解的关于从 GridView 保存到 DataSet 和 DB 的所有信息均已解释为 this article

    希望这会有所帮助!

    【讨论】:

    • 您的链接很有用,但不适用于我想要的情况。请检查我添加的第二个代码以了解问题所在,我等待您的回答并提前感谢您的帮助。
    • 实际上它确实适用于如何将已编辑的行保存到数据集,最后一段代码显示了如何将该数据集保存到数据库。
    • 其实这不是我想要的,但是你发的链接很有用。感谢您的帮助。
    【解决方案2】:

    如果它是“一个重要的应用程序”,我建议使用存储过程,并且只向包上的数据库用户授予 EXECUTE 权限。如果用户拥有完整的 DML 权限,您的数据可能更容易受到攻击。

    这是一个关于调用存储过程的basic tutorial

    如果你有时间,我也会看看Microsoft Enterprise Library

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2013-12-24
      • 2015-10-14
      相关资源
      最近更新 更多