2009-05-18 2 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

as, 위의 설명에 썼습니다. 사람들이 실제로 테이블 레코드를 삭제하고 업데이트하지 않고도 응용 프로그램의 임시 데모를 만들고 싶습니다. 그래서 데이터 세트를 사용하기로 결정하고 세션에서 유지하므로 모든 데이터 조작이이 데이터 세트에서 수행됩니다 (제한 될 것이므로 메모리 낭비에 대해 걱정할 필요가 없습니다) – 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; 
    } 
} 
관련 문제