C#创建Access数据库、表格、并向表格中添加数据

时间:2022-10-16 23:23:07

C#创建Access数据库以及表,并向表格添加数据

本文主要演示如何通过C#创建Access数据库以及表格,需要执行演示代码,必须添加两个扩展程序包(COM组件):

  • Microsoft ADO Ext. 2.8 for DDL and Security
  • Microsoft ActiveX Data Objects 2.8 Library
    如下图:
    C#创建Access数据库、表格、并向表格中添加数据

效果图:
C#创建Access数据库、表格、并向表格中添加数据


主要代码

  public class Access
{
private static OleDbConnection accessConnection; //Access数据库连接
private static string tableName;
private static List<string> dataShareField = new List<string>(); //共享字段

/************************************************************************/
/* 在指定目录下创建mdb数据库
* 应该先判断文件是否存在,如果不存在,就直接创建,如果存在,则提示用户是否删除重建
/************************************************************************/

public static bool CreateAccessDb(string filePath)
{
ADOX.Catalog catalog = new Catalog();
if (!File.Exists(filePath))
{
try
{
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");
}
catch (System.Exception e)
{
Trace.TraceWarning("创建Access数据库出错,测试数据不能保存");
return false;
}
}
return true;
}

//在指定的Access数据库中穿点指定的表格
public static bool CreateAccessTable(string filePath, string tbName, List<string> colums)
{
ADOX.Catalog catalog = new Catalog();
//数据库文件不存在则创建
if (!File.Exists(filePath))
{
try
{
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");
}
catch (System.Exception e)
{
Trace.TraceWarning("创建Access表出错" , e);
return false;
}
}
ADODB.Connection cn = new ADODB.Connection();
try
{
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath, null, null, -1);
}
catch (System.Exception ex)
{
Trace.TraceWarning("Access连接打开失败" , ex);
return false;
}

catalog.ActiveConnection = cn;
ADOX.Table table = new ADOX.Table();
table.ParentCatalog = catalog;
table.Name = tbName;
//公共字段
{
colums.Insert(0, "test_time");
colums.Insert(1, "circuit_batches");
colums.Insert(2, "function");
colums.Insert(3, "ins_no");
colums.Insert(4, "fixture_no");
colums.Insert(5, "testos_no");
}

foreach (var column in colums)
{
ADOX.ColumnClass col = new ADOX.ColumnClass();
col.ParentCatalog = catalog;
col.Name = column;
col.Attributes = ColumnAttributesEnum.adColNullable; //允许空值
table.Columns.Append(col, DataTypeEnum.adVarWChar, 50); //默认数据类型和字段大小
}
catalog.Tables.Append(table);

accessConnection = new OleDbConnection(cn.ConnectionString);
tableName = tbName;
try
{
accessConnection.Open();
}
catch (System.Exception ex)
{
Trace.TraceWarning( "Access连接打开失败" , ex);
return false;
}
cn.Close();
return true;
}

public static bool AppendData2Access(Dictionary<string, object> data)
{
if (data.Count > 0)
{
string fields = null;
string values = null;
string sql = null;
foreach (var item in data)
{
fields += item.Key.ToString() + ',';
values += string.Format("'{0}'", item.Value.ToString()) + ',';
}
fields = fields.Remove(fields.Length - 1, 1);
values = values.Remove(values.Length - 1, 1);
sql = string.Format("insert into {0} ({1}) values ({2})", tableName, fields, values);
OleDbCommand cmd = new OleDbCommand(sql, accessConnection);
cmd.ExecuteNonQuery();
}
return true;
}

public static void ClosedbConnection()
{
accessConnection.Close();
}
}

函数说明

1、 public static bool CreateAccessDb(string filePath)
功能:创建Access数据库到指定的目录。
2、 public static bool CreateAccessTable(string filePath, string tbName, List colums) 功能:在指定的Access数据库中创建指定指定名称的表格和指定列。
3、 public static bool AppendData2Access(Dictionary\<\string, object> data)
功能:向表格中添加数据.
4、 public static void ClosedbConnection()
功能:关闭连接。