Tình hình là mình có một database viết trên MS Access như thế này:
Khi mình Execute Querry vào thì database vẫn chạy bình thường, vì table trên thực ra là tạo ra bằng truy vấn trong Window_Loaded() và các biến static trong class App (Sau đó mình có thêm data vào):
public partial class App : Application
{
public static OleDbConnection Database = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "Data.accdb");
public static OleDbCommand Query = new OleDbCommand(@"CREATE TABLE List([ID] AUTOINCREMENT NOT NULL PRIMARY KEY, [Time] DATETIME NOT NULL, [Event] Text NOT NULL, [Description] MEMO)", Database);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
if (!System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Data.accdb"))
try
{
new System.Net.WebClient().DownloadFile(@"http://puu.sh/znkUE", AppDomain.CurrentDomain.BaseDirectory + "Data.accdb");
}
catch
{
MessageBox.Show("Unable to connect to server, cannot download database file. Please reinstall!", Title, MessageBoxButton.OK, MessageBoxImage.Error);
Close();
}
try
{
App.Database.Open();
}
catch
{
MessageBox.Show("Unable to connect to database file. The program will connect to server and download a new one.");
try
{
System.IO.File.SetAttributes(AppDomain.CurrentDomain.BaseDirectory + "Data.accdb", System.IO.FileAttributes.Normal);
System.IO.File.Delete(AppDomain.CurrentDomain.BaseDirectory + "Data.accdb");
new System.Net.WebClient().DownloadFile(@"http://puu.sh/znkUE", AppDomain.CurrentDomain.BaseDirectory + "Data.accdb");
App.Database.Open();
}
catch
{
MessageBox.Show("Unable to connect to server, cannot download database file. Please reinstall!", Title, MessageBoxButton.OK, MessageBoxImage.Error);
Close();
}
}
App.Query.ExecuteNonQuery();
App.Query.Connection.Close();
FillData();
}
Trong ứng dụng mình có tạo một DataGrid và đặt tên là DataGrid_Events. Mình viết hàm FillData() để truy vấn và hiển thị dữ liệu lên Grid mà không hiểu sao nó không hiện lên khi mình bật ứng dụng. Mọi người ai biết chỉ cho mình với.
void FillData()
{
App.Database.Open();
App.Query.CommandText = @"SELECT * FROM List";
OleDbDataAdapter sda = new OleDbDataAdapter(App.Query);
DataTable dt = new DataTable("List");
sda.Fill(dt);
DataGrid_Events.ItemsSource = dt.DefaultView;
}