如何将数据从GridView保存到数据库?

时间:2011-08-13 09:56:15

标签: c# asp.net gridview dataset dataadapter

我正在开发一个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的DataSet,我在循环中编辑一个字段,如下所示: -

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中看到它,但数据库不受影响,我尝试使用fill&amp;更新OdbcDataAdapter和OdbcCommandBuilder的方法??

请在开发一个重要的应用程序时,这是迫切需要的。

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

2 个答案:

答案 0 :(得分:1)

您需要了解的有关从GridView保存到DataSet和数据库的所有信息都是this article

希望这有帮助!

答案 1 :(得分:0)

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

这是调用存储过程的basic tutorial

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