class AccessHelper
{
//定義連接字符串
public static string ConnectionString;
#region 更新數據庫中表
public static void UpdateDBDatatable(System.Data.DataTable dt, string dbTableName)
{
if (!ExistDBData(dbTableName))
{
CreatDBData(dt, dbTableName);
}
OleDbConnection conn = new OleDbConnection(ConnectionString);
try
{
conn.Open();
//先把原來的表數據全部刪除
string delCommand = string.Format("delete * from {0}", dbTableName);
OleDbCommand dc = new OleDbCommand(delCommand, conn);
dc.ExecuteNonQuery();
//將記錄增加進表中,輪詢一行一行插入
for (int i = 0; i < dt.Rows.Count; i++)
{
string addCommandText = string.Format("Insert Into {0} Values('{1}'", dbTableName, dt.Rows[i].ItemArray[0]);
for (int j = 1; j < dt.Columns.Count; j++)
{
addCommandText += string.Format(",'{0}'", dt.Rows[i].ItemArray[j]);
}
addCommandText += ")";
dc.CommandText = addCommandText;
dc.Connection = conn;
dc.ExecuteNonQuery();
}
dc.Dispose();
}
catch (Exception e)
{
if (e.Message.Contains("查詢值的數目與目標字段中的數目不同"))
{
DeleteDBData(dbTableName);
UpdateDBDatatable(dt, dbTableName);
}
}
conn.Close();
}
#endregion
#region 新建數據庫表
public static void CreatDBData(System.Data.DataTable dt, string tableName)
{
OleDbConnection conn = new OleDbConnection(ConnectionString);
try
{
conn.Open();
//構建字段組合
string StableColumn = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
var t = dt.Columns[i].DataType;
if (t.Name == "String")
{
StableColumn += string.Format("{0} varchar", dt.Columns[i].ColumnName);
}
else if (t.Name == "Int32" || t.Name == "Double")
{
StableColumn += string.Format("{0} int", dt.Columns[i].ColumnName);
}
if (i != dt.Columns.Count - 1)
{
StableColumn += ",";
}
}
string cmdtxt = "";
if (StableColumn.Contains("ID int"))
{
StableColumn = StableColumn.Replace("ID int,", "");
cmdtxt = string.Format("create table {0}(ID autoincrement primary key,{1})", tableName, StableColumn);
}
else
{
cmdtxt = string.Format("create table {0}({1})", tableName, StableColumn);
}
OleDbCommand dc = new OleDbCommand(cmdtxt, conn);
dc.ExecuteNonQuery();
dc.Dispose();
}
catch (Exception e)
{
System.Windows.MessageBox.Show(e.Message);
}
conn.Close();
conn.Dispose();
}
#endregion
#region 刪除數據庫中表
public static bool DeleteDBData(string tableName)
{
if (ExistDBData(tableName))
{
OleDbConnection conn = new OleDbConnection(ConnectionString);
try
{
conn.Open();
string Command = string.Format("drop table {0}", tableName);
OleDbCommand dc = new OleDbCommand(Command, conn);
dc.ExecuteNonQuery();
dc.Dispose();
conn.Close();
return true;
}
catch (Exception)
{
conn.Close();
return false;
}
}
else
{
return true;
}
}
#endregion
#region 查詢數據庫是否存在表
public static bool ExistDBData(string tableName)
{
OleDbConnection conn = new OleDbConnection(ConnectionString);
try
{
conn.Open();
string Command = string.Format("select * from {0}", tableName);
OleDbCommand dc = new OleDbCommand(Command, conn);
dc.ExecuteNonQuery();
dc.Dispose();
conn.Close();
return true;
}
catch (Exception)
{
conn.Close();
return false;
}
}
#endregion
#region 獲取數據庫中表
public static System.Data.DataTable GetDBData(string tableName)
{
if (!ExistDBData(tableName))
{
return null;
}
try
{
OleDbConnection conn = new OleDbConnection(ConnectionString);
conn.Open();
string cmdtxt = string.Format("select * from {0}", tableName);
System.Data.DataTable dt = new System.Data.DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(cmdtxt, conn);
da.Fill(dt);
da.Dispose();
conn.Close();
return dt;
}
catch (Exception e)
{
System.Windows.MessageBox.Show(e.Message);
return null;
}
}
#endregion
}
C#操作Access數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.