2017-12-01 29 views
-1

AccessデータベースをSql Serverにインポートする必要があります。 C#で長年作られた私のソフトウェアは、Accessデータベースに統合されています。これからSql Serverに移行し、次のバージョンへのアップグレードが予定されています。システムはSql Serverでのみ動作します。私はまず、テーブルとカラムの同じ名前を持つSQLデータベースを作成し、ソフトウェアがAccessテーブルを読み込んでSqlデータベースにデータを保存すると思います。コーディングでこれを行う他のより現実的な方法はありますか?MS AccessからSql Serverにデータをインポートする方法

私は検索しているだけですぐにツールを見つけましたが、コーディングでは何も見つかりませんでした。

+1

その1オフタスクならば、なぜコードでこれを行いますか? SSMA/SQL Server移行アシスタントはこれを実行して、良い出発点を与えることができます。 –

+0

この場合、各ユーザーのコンピュータでコンピュータにアクセスし、移行を行うためにSqlServerをインストールする必要があります。その意図は、ソフトウェアによって、Visual Studioによって作成されたフォームで、新しいバージョンのソフトウェアを更新するときに、ユーザー自身が、Okボタンをクリックするだけで新しいデータベースに移行できるということです。 – Leandro

答えて

0

あなたのアクセスデータベーステーブルには3つの列があり、1つ目は整数型、2番目はstring(varchar)、3番目はDateTime(date)です。

だからこれは、SQL Serverへのアクセスからデータを渡すためにしなければならないコードです:

DataTable table = new DataTable(); 
// get data from access 
using(OleDbConnection conn = new OleDbConnection("connString1")) 
{ 
    using(OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT * FROM MyTable", conn)) 
      da.Fill(table); 
} 

//insert data into Sql server: 
using(SqlConnection conn = new SqlConnection("connString2")) 
{ 
    using(SqlCommand cmd = new SqlCommand()) 
    { 
      cmd.CommandText = @"INSERT INTO MyTable VALUES (@p1, @p2, @p3)"; 
      cmd.Connection = conn; 
      cmd.Parameters.Add("@p1", SqlDbType.Int); 
      cmd.Parameters.Add("@p2", SqlDbType.CarChar, 50); 
      cmd.Parameters.Add("@p3", SqlDbType.DateTime); 
      conn.Open(); 

      for(int i = 0; i < table.Rows.Count; i++) 
      { 
        cmd.Parameters["@p1"].Value = Convert.ToInt32(table.Rows[i][0]); 
        cmd.Parameters["@p2"].Value = table.Rows[i][1].ToString(); 
        cmd.Parameters["@p3"].Value = Convert.ToDateTime(table.Rows[i][2]); 
        try 
        { 
          cmd.ExecuteNonQuery(); 
        } 
        catch (Exception ex) 
        { 
          MessageBox.Show(ex.Message); 
          break; 
        } 
      } 
    } 
} 
+0

これはまさに私がやっていることです。それはそれを行うための簡単な方法がないということですか? – Leandro

+0

これはコードを使って行う最も簡単な方法です。 – vijayvicks

+0

@vijayvikcs Tkx! – Leandro

関連する問題