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 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();
}
}
}