2009-05-18 4 views
1

私はこのコードを使用してデータベーステーブルのデータを更新します。 同じコードを再利用してデータセットを更新できますか?おかげさまで SqlCommandを使用してデータセットにデータを更新/挿入することは可能ですか?

using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString)) 
     { 
      string sql = "UPDATE tbh_Categories SET Title = @Title, 
          Description = @Description 
          WHERE CategoryID = @CategoryID"; 
      SqlCommand cmd = new SqlCommand(sql, cn); 
      cmd.CommandType = CommandType.Text; 
      cmd.Parameters.Add("@CategoryID", SqlDbType.Int).Value = category.ID; 
      cmd.Parameters.Add("@Title", SqlDbType.NVarChar).Value = category.Title; 
      cmd.Parameters.Add("@Description", SqlDbType.NVarChar).Value = category.Description; 

      cn.Open(); 
      int ret = cmd.ExecuteNonQuery(); 

      return (ret == 1); 
     } 

答えて

0

答えはいいえです。ただし、DataTable.Selectを使用して、更新するDataTableの行を識別できます。しかし、実際の表自体を「手で」修正する必要があります。

私はあなたが何をしようとしているのかを尋ねる必要があります。たとえば、更新可能なDataSetを使用して一部のデータをキャッシュしようとしていますか?あるいは、余分なデータベースの移動を避けようとしていますか?あなたが私たちに知らせるならば、あなたがやろうとしていることをする良い方法があるかもしれません。インメモリデータベースが必要な場合は、are lots out thereです。

コメント数:SQLiteをチェックしてください。あなたが望むことをさせるかもしれない.NET Wrappersがあります。

+0

として、私は上記のコメントに書いた。人々が実際にテーブルレコードを削除したり更新したりすることなく、アプリケーションの一時的なデモを作成したいと考えています。 そのため、私はデータセットを使用してセッション中に保管することに決めました。このため、すべての操作はこのデータセットで行われます(制限されるためメモリの浪費はありません) – markiz

0

正確なコードは同じですか?いいえ.SqlConnection(とSqlCommand)はSqlServerに固有です。 DataSetはそのコンテキスト外に存在するため、DataSetを更新するためにコードを書き直す必要があります。

+0

私はそれが可能な場合、SQL構文を使用することを意味ですか? – markiz

0

いいえ、私はそうは思わない。 DataTableの行をループするか、データベースを更新してリロードしてください。

+0

デモショーケース (データベースを変更したくない)のように、データベースをメモリに格納して操作する必要があります。 セッションごとにデータが「復元」されます。 – markiz

0

コードを少し変更する必要があります。 SqlDataAdapterのインスタンスを使用し、そのメソッドをUpdateとして使用する必要があります。小さなcode sample MSDNから:

public DataSet CreateCmdsAndUpdate(string connectionString, 
    string queryString) 
{ 
    using (OleDbConnection connection = new OleDbConnection(connectionString)) 
    { 
     OleDbDataAdapter adapter = new OleDbDataAdapter(); 
     adapter.SelectCommand = new OleDbCommand(queryString, connection); 
     OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); 

     connection.Open(); 

     DataSet customers = new DataSet(); 
     adapter.Fill(customers); 

     //code to modify data in dataset here 

     adapter.Update(customers); 

     return customers; 
    } 
} 
関連する問題