2011-08-13 73 views
1

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

我可以使用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"; 
} 

} 

如何做出这些改变在数据库中完成的,因为我可以看到它在GridView当我做数据绑定(),但数据库没有受到影响,我尝试使用OdbcDataAdapter的的填充&更新方法和OdbcCommandBuilder ??

请,这是迫切,因为我需要它在发展中具有重要的应用..

预先感谢您的回复和解答.....

回答

1

一切你需要了解在GridView节约到DataSet和DB的解释是this article

希望这会有所帮助!

+0

您的链接很有用,但不适用于我想要的情况。请检查我添加的第二个代码,以了解问题所在,我等待您的回答,并提前感谢您的帮助。 – TopDeveloper

+1

实际上它适用于如何将编辑的行保存到数据集,最后一段代码显示如何将该数据集保存到数据库。 – Abbas

+0

其实这不是我想要的情况,但你发送的链接是有用的。谢谢你的帮助。 – TopDeveloper

0

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

下面是关于调用存储过程

如果你有时间basic tutorial,我也想看看Microsoft Enterprise Library

相关问题