mdb文件一般用ACCESS就能直接打开,也可以用办公软件excel来打开。
mdb是数据库文件,一些数据库软件也能打开mdb格式文件的,一般都做是程序用的,先在电脑上安装SQLSERVER数据库软件,然后再附加一下就可以打开了。MDB是欧洲售货机制造者协会制定的一套用于协调自动售货系统的主控制器与多个外设之间通信的协议。
标准首先是由Coinco在美国可口可乐公司的指定下开发的,这个标准于1993年被NAMA协会采用经过一个专门的工作组修订后,于1994年被EVMMA采用。
mdb文件使用方法:
1、打开Access数据库软件,在d出的窗口内,选择新建数据库中的空Access数据库,然后在文件新建数据库窗口内设置数据库文件名,这里我输入DJMessage作为数据库名。
2、点击文件菜单下的获取外部数据中的导入,在打开的导入窗口内,先将文件类型选择为MicrosoftExcel。在查找范围内选择XLS文件的存放路径,然后选中要转换的XLS文件,点导入,打开导入数据向导窗口,根据这个向导,一步步地完成数据的导入。
思路很简单,就是先依次获取Excel中表的表名,然后再将Excel表的数据导入到内存以DataTable格式存在,最后再把dataTable数据导入到Mdb数据库文件中。最后实现的功能可以使Excel多表进行导入,如果Mdb数据库文件中已有新建的表, *** 作是先删除数据库中的已存在表,再重新创建表,导数据。
源码:
using Systemusing System.Collections.Genericusing System.ComponentModelusing System.Datausing System.Drawingusing System.Linqusing System.Textusing System.Threading.Tasksusing System.Windows.Formsusing System.Data.OleDb
namespace TestK
{
public partial class Form1 : Form {
public Form1()
{
InitializeComponent()
}
public int tableNameNum = 0 //记录Excel中所有表的数量 public OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\\Users\\CES\\Desktop\\CES.mdb")
//建立与数据库文件CES.mdb的连接
//打开以.xls或者.xlsx结尾的文件 private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog() //创建窗体 dlg.Filter = "Excel文件 (*.xls*.xlsx)|*.xls*.xlsx" //浏览过滤出以.xls或者.xlsx结尾的文件 if(dlg.ShowDialog() == DialogResult.OK)
{
string filePath = dlg.FileName //获取打开文件的路径 this.textBox1.Text = filePath
}
}
//获取Excel中所有表的表名 public string[] GetTableName(string excelFilename)
{
//建立与指定Excel文件的连接 string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0Data Source={0}Jet OLEDB:Engine Type=35Extended Properties=Excel 8.0Persist Security Info=False", excelFilename)
string[] tableName = new string[20] //存储Excel中所有表的表名 string temp //中间变量
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString))
{
connection.Open()
//获取数据库架构信息,包括列、主键、表等信息 DataTable table = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null)
for (int i = 0 i < table.Rows.Counti++ )
{
temp = table.Rows[i]["Table_Name"].ToString() //获取Excel中的表名 tableName[i] = temp.Replace("$", "") //因为获取的表名最后会有$符号,所以要替换 }
tableNameNum = table.Rows.Count
connection.Close()
}
return tableName
}
//获取Excel中每张表的数据,以datatable类型返回 public DataTable GetExcelTable(string excelFilename,string tableName)
{
//建立与指定Excel文件的连接 string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0Data Source={0}Jet OLEDB:Engine Type=35Extended Properties=Excel 8.0Persist Security Info=False", excelFilename)
DataSet ds = new DataSet() //数据集 //using中声明的对象connection,在using语句块结束后会自动释放 using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString))
{
connection.Open()
//获取数据库架构信息,包括列、主键、表等信息 DataTable table = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null)
string strExcel = "select * from " + "[" + tableName + "$]"
//打开数据链接,得到一个数据集 OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, connectionString)
//在数据集中查询表名为tableName的表,然后把其数据在装入数据集ds中 adapter.Fill(ds, tableName)
connection.Close()
}
return ds.Tables[tableName]//以datatable类型返回数据集ds中表名为tableName的表 }
//判断在数据库中,指定表名的表是否存在 public bool TableExists(string table)
{
bool rythm
connection.Open()
//读取表名为table的表的行数信息 rythm = connection.GetSchema("Tables", new string[4] { null, null, table, "TABLE" }).Rows.Count > 0
connection.Close()
return rythm
}
//如果在建表之前,数据库已经存在该表,那么首先要先删除此表 public void DeleteTable(string tableName)
{
string sql = "drop table "+tableName+""
connection.Open()
OleDbCommand cmd = new OleDbCommand(sql, connection)
cmd.ExecuteNonQuery()
connection.Close()
}
//中间类型为dataTable的表数据转换到数据库mdb文件中 public bool dataTableToMdb(string excelPath,string tableName)
{
//获取Excel中表的数据 DataTable dt = GetExcelTable(excelPath,tableName)
//表中数据大于等于两行,数据转入格式才是正确的 if (dt.Rows.Count >= 2)
{
string[] cloumnName = new string[50]
//获取Excel中表的所有列名 for (int i = 0 i < dt.Columns.Count i++)
{
cloumnName[i] = dt.Rows[0][i].ToString()
}
//在mdb数据库文件中创建表 string sql = "create table " + tableName + " (" + cloumnName[0] + " varchar null)"
connection.Open()
OleDbCommand cmd = new OleDbCommand(sql, connection)
cmd.ExecuteNonQuery()
//在mdb数据库文件中,给已创建好的表添加好所有列 for (int i = 1 i < dt.Columns.Count i++)
{
sql = "alter table " + tableName + " add " + cloumnName[i] + " varchar null"
cmd = new OleDbCommand(sql, connection)
cmd.ExecuteNonQuery()
}
//在mdb数据库文件中,给已创建好的表加入数据 for (int t = 1 t < dt.Rows.Count t++)
{
sql = "insert into " + tableName + " values('"
for (int k = 0 k < dt.Columns.Count k++)
{
if (k != dt.Columns.Count - 1)
{
sql = sql + dt.Rows[t][k].ToString() + "','"
}
else {
sql = sql + dt.Rows[t][k].ToString() + "')"
}
}
cmd = new OleDbCommand(sql, connection)
cmd.ExecuteNonQuery()
}
connection.Close()
return true
}
else {
MessageBox.Show("Excel中"+ tableName +"表的原始数据格式不正确!")
}
return false
}
private void button2_Click(object sender, EventArgs e)
{
int flag = 1 //判断由Excel表导入到Mdb是否成功的标记变量
.mdb是数据库格式的一种 如果你要是想把excel中转换成.mdb的话你可以建一个Access数据库 然后在里面点右键导入 底下的格式选成excel 选择你的excel文件就行。一、打开Access数据库软件,在d出的窗口内,选择“新建数据库”中的“空access数据库”,然后在“文件新建数据库”窗口内设置数据库文件名,这里我输入“DJMessage”作为数据库名。
二、点击“文件”菜单下的“获取外部数据”中的“导入...”,在打开的“导入”窗口内,先将“文件类型”选择为“Microsoft Excel(.xls)”,在“查找范围”内选择XLS文件的存放路径,然后选中要转换的XLS文件,点“导入”,打开“导入数据向导”窗口,根据这个向导,一步步地完成数据的导入,具体步骤如下:
第一步、工作表选择:从显示的工作表中,选择要存放数据的工作表(如图1)。第二步、标题设置:在Excel中,一般会在表格的第一行中设置列标题,在这一步中,根据XLS表的不同,设置表格第一行是否包含列标题,如果第一行为列标题,则要选中“第一行包含列标题”,如果表格内有多行列标题,则要在导入数据之前将这些列标题目删除,否则,标题就会当做数据导入到数据库中。第三步、数据保存设置:这一步按默认的设置,选择数据的保存位置为“新表中”。第四步、字段设置:如果在第二步中勾选了“第一行包含列标题”,则在“字段名”中显示的是列标题,否则在“字段名”中显示的是“字段1”、“字段2”等名称。只要在“字段名”中重新输入新的名称即可设置该列的字段名(如图2)。第五步、主键设置:设置主键一方面避免数据的重复,另一方面还可以加快数据查询速度,而我要建立的数据库是配合ASP网页查询用的,当然更要设置主键了,这里选择的是“用access添加主键”默认设置。第六步、表名设置:在“导入到表”下建立一个表名,将数据导入到这个表中,我输入的是“mytable”作为表名,再点“完成”就结束了数据导入。回到数据库窗口,就看到添加了一个“mytable”数据表,这样生成的DJMessage.mdb才是一个真正的数据库。把DJMessage.mdb复制到ASP网页目录中,调试一下查询系统,一切OK!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)