欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207
背景
小伙伴们在做revit二次开发时,可能会需要用到数据库。
本文将介绍如何在Revit如何连接Access数据库,
其兄弟篇将会介绍Revit如何连接Mysql数据库。
revit连接mysql数据库
思路
主要有两种方法:
1. OleDbDataAdapter方式:填入datatable中,遍历行列读取
2. sqlCommand方式:通过Read()方法,while循环读取
本文将会介绍OleDbDataAdapter方式,其兄弟篇体现sqlCommand方式。
代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Threading;
namespace Revit_Access
{
[Transaction(TransactionMode.Manual)]
class Revit_Access : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//获取当前文档
Document doc = commandData.Application.ActiveUIDocument.Document;
//数据库连接,accdb格式采用这种连接方式,另外一种mdb格式连接方式参看博主下面网址中的文章
//https://blog.csdn/birdfly2015/article/details/87642181
string oleDBString = "Provider=Microsoft.ACE.OLEDB.12.0;";
oleDBString += @"Data Source=E:\黑夜の骑士\数据库.accdb";
using (OleDbConnection objConnection = new OleDbConnection(oleDBString)) //连接数据库
{
objConnection.Open();//开启数据库
string sql = "select * from 表1 "; //建立SQL查询
OleDbDataAdapter dbDataAdapter = new OleDbDataAdapter(sql, objConnection);
DataSet ds = new DataSet();//新建表集合对象
dbDataAdapter.Fill(ds); //用适配对象填充表对象
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)//通过循环得到每一行每一列的元素
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
//输出数据库结果,这里默认为第一个table,列既可以通过列号,也可以通过列名来得到
TaskDialog.Show("连接Access数据库",ds.Tables[0].Rows[i]["年龄"].ToString());
}
}
}
return Result.Succeeded;
}
}
}
注意事项
需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111
- 如果想做本地读取,采用Access数据库(两种格式)即可,如果想做网络版读取则采用Mysql数据库
- 这里介绍了其中一种读取方式,另外一种大家可以参看兄弟篇
- 微信搜素公众号“工程人的编程课堂”,获得最新行业资讯,以及更多编程干货。
更多推荐
Revit连接Access数据库
发布评论