[Access] Zmiana struktury bazy danych


(Marcin Obala) #1

Witam

Mój problem polega na tym że chciałbym zdalnie zaktualizować strukturę bazy danych w accessie, format accdb.

Klient ma bazę ale nie może jej wysłać (ochrona danych i takie tam), jednak przy zmianach w programie nastąpiły zmiany w formacie bazy danych. Dlatego pytam czy ktoś zna jakiś sposób czy to w postaci gotowej aplikacji albo w postaci kodu w C#.

Miał ktoś do czynienia z tym? Tak mi teraz wpadło czy po prostu nie otworzyć bazy danych w programie, i nie wydać polecenia na bazie ALTER TABLE.

Z resztą za chwile sprawdzę i jak już napisałem tyle to zostawię temat bo może jak zadziała to się potomnym przyda.

-- Dodane 19.09.2011 (Pn) 12:48 --

I jednak działa :wink: przykładowo żeby dodać kolumnę do tabeli w bazie wystarczy taki kod

using System;

using System.Windows.Forms;

using System.Data;

using System.Data.OleDb;

namespace UpdateDatabase

{

    public partial class Form1 : Form

    {

        private const string Path = "C:\\baza.accdb";

        string _connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}",Path);

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            string query = "ALTER TABLE Pracownicy ADD Testowa varchar[20]";

            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query,_connectionString);


            DataTable dataTable = new DataTable();

            dataAdapter.Fill(dataTable);

        }

    }

}

A tutaj taka chyba bardziej prawidłowa wersja

using System;

using System.Windows.Forms;

using System.Data;

using System.Data.OleDb;

namespace UpdateDatabase

{

    public partial class Form1 : Form

    {

        private const string Path = "C:\\ProjektTipTop1.accdb";

        string _connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}",Path);

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            string query = "ALTER TABLE Pracownicy ADD Testowa varchar[20]";

            OleDbConnection connection = new OleDbConnection(_connectionString);

            connection.Open();

            OleDbCommand command = new OleDbCommand(query,connection);

            command.ExecuteNonQuery();

        }

    }

}