Access数据库虽然以性能差劲著称,但是在微型应用中还是挺方便的。
首先确认你的工程是32位(默认的Any不行),这里应该显示为x86或Win32,如果不是需要先修改。这主要是因为创建数据库使用的COM组件ADOX不支持64位,连接数据库的Jet引擎也不支持64位(新版数据库引擎不自带,需要安装一个比较大的库,使用比较麻烦)。
然后需要添加ADOX这个COM组件:
创建数据库使用XXXXXXXtalog的Create命令:
<code class="language-cs">using ADOX;
</code>
<code class="language-cs">static void CreateDB(string filePath)
{
Catalog catalog = new Catalog();
if (!File.Exists(filePath))
{
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");
}
catalog = null;
GC.Collect();
}
</code>
连接Access数据库通常使用OLEDB,连接字符串如下:
<code class="language-cs">"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件名;Jet OLEDB:Engine Type=5"
</code>
全部代码如下:
<code class="language-cs">using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.IO;
using ADOX;
using System.Data;
using System.Data.OleDb;
using System.Data.Common;
namespace ConsoleApplication1
{
class Program
{
static string mdbfile = "sss.mdb";
static void Main(string[] args)
{
try
{
CreateDB(mdbfile);
using (DbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbfile + ";Jet OLEDB:Engine Type=5"))
{
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
try
{
cmd.CommandText = "create table sss (id int, name varchar);";
cmd.ExecuteNonQuery();
}
catch (DbException ex)
{
}
cmd.CommandText = "insert into sss values(1, 'acmilan');";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into sss values(2, '中文字符');";
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
static void CreateDB(string filePath)
{
Catalog catalog = new Catalog();
if (!File.Exists(filePath))
{
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");
}
catalog = null;
GC.Collect();
}
}
}
</code>
200字以内,仅用于支线交流,主线讨论请采用回复功能。