欢迎加入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

  1. 如果想做本地读取,采用Access数据库(两种格式)即可,如果想做网络版读取则采用Mysql数据库
  2. 这里介绍了其中一种读取方式,另外一种大家可以参看兄弟篇
  3. 微信搜素公众号“工程人的编程课堂”,获得最新行业资讯,以及更多编程干货。

更多推荐

Revit连接Access数据库