2008-08-19 7 views
9

수동으로 데이터 집합 테이블 속성을 구문 분석하지 않고도 Vb.Net 2005에서 테이블을 만들고 데이터베이스에 추가 할 수 있습니까?데이터 집합 테이블에서 DB 테이블 만들기

일부 컴퓨터에는 이전 버전의 데이터베이스가 있으며, 누락 된 테이블이 있는지 감지하고 테이블의 현재 상태를 기반으로 테이블을 생성 할 수있는 방법을 찾고 있습니다 데이터 세트에서. 우리는 새 버전을 출시 할 때마다 (새 열이 추가 된 경우) 테이블을 다시 스크립팅하고 있지만 가능하면이 단계를 피하려고합니다.

+0

Yaakov Ellis 링크가 끊어졌으며 [this] (http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/)로 변경되었습니다.). –

답변

7

이 MSDN 포럼 게시물을 참조하십시오. Creating a new Table in SQL Server from ADO.net DataTable.

포스터는 사용자와 동일한 작업을 수행하는 것으로 보이며 DataTable에 포함 된 스키마를 사용하여 Create Table 문을 생성하는 코드를 제공합니다.

이 코드는 정상적으로 작동한다고 가정하면 해당 코드를 가져와 SqlCommand.ExecuteNonQuery()을 통해 데이터베이스에 제출하여 테이블을 만들 수 있습니다.

1

여기

SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa123;database=Example1"); 
     con.Open(); 
     string sql = "Create Table abcd ("; 
     foreach (DataColumn column in dt.Columns) 
     { 
      sql += "[" + column.ColumnName + "] " + "nvarchar(50)" + ","; 
     } 
     sql = sql.TrimEnd(new char[] { ',' }) + ")"; 
     SqlCommand cmd = new SqlCommand(sql, con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     cmd.ExecuteNonQuery(); 
     using (var adapter = new SqlDataAdapter("SELECT * FROM abcd", con)) 
     using(var builder = new SqlCommandBuilder(adapter)) 
     { 
      adapter.InsertCommand = builder.GetInsertCommand(); 
      adapter.Update(dt); 
     } 
     con.Close(); 

당신이 해결할 문제를 가지고 희망 코드입니다. 여기에서 dt는 데이터 테이블의 이름입니다. 다른 방법 u는 당신이 내가 해답을 제공 한 생각한다면

adapter.Update(ds.Tables[0]); \\if u have a dataset 

내 대답을 투표하세요와

adapter.update(dt); 

을 대체 할 수 있습니다!

관련 문제