2

データベースから特定のテーブルのレコードを表示する GridView を含む ASP.Net C# Web アプリケーションを開発しています。ODBC 接続を使用してデータベースに接続し、DataSet を使用してデータを保存して編集し、データを保存する必要があります。 DataSet で行われた変更を使用してデータベースに。

OdbcDataAdapter の fill() メソッドを使用してデータベースに正常にアクセスでき、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 で確認できるように、データベースでこれらの変更を行う方法はありますが、データベースは影響を受けず、 OdbcDataAdapter および OdbcCommandBuilder の fill および update メソッドを使用してみますか??

重要なアプリケーションを開発するために必要なので、これは緊急です..

返信と回答を事前にありがとうございます.....

4

2 に答える 2

0

「重要なアプリケーション」の場合は、ストアド プロシージャを使用して、パッケージのデータベース ユーザーに EXECUTE 権限のみを付与することをお勧めします。ユーザーが完全な DML 権限を持っている場合、データはより脆弱になる可能性があります。

ストアド プロシージャの呼び出しに関する基本的なチュートリアルを次に示します。

時間があれば、Microsoft Enterprise Libraryも参照してください。

于 2011-08-14T11:32:00.967 に答える
0

GridView から DataSet および DB への保存について知っておく必要があることはすべて、この記事で説明されています。

お役に立てれば!

于 2011-08-13T15:42:37.023 に答える