在Excel催化剂中,独树一帜地推出了Excel与数据库交互功能,目前仅实现了对Sqlserver的交互,在通用型插件中仅此一家,别无其他。
为何会出现这样的局面呢,原因大概有以下几大方面:
言归正传,Excel催化剂与Sqlserver交互靠的是什么?
在传统VBA开发中,只能用ADO这样的方式和数据库交互,当然代码不嫌麻烦的话,勉强还可以用着。
在VSTO的环境下,完全已经没有理由再用ADO这样的方式访问数据库了,虽然还保留这样的能力,而应该用上ADO.Net的方式,对ADO进行了很大的升级。
前面篇幅里提及的DataTable就是ADO.Net的其中一部分,大家可能已经可以略略地感之到它的便利性。
在.Net的世界里,区别于传统VBA开发的思维是,想要实现某个功能的首要任务不是立马撸起手袖干起来,而是习惯性地去百度、谷歌一翻,看看有没现成的轮子可用,特别是通用性的大部分程序员都会用到的功能,千万别一开始自己去撸代码,除非对自己代码能力特别有信心,同时抱负着拯救千万低级码农于一身的使命才合适去做这样的事情。
不扯远,如何用懒癌的方式实现Excel与Sqlserver交互?答案是找个SqlHelper代码段即可。
以下是笔者初学VSTO时,在百度上找到的热心码农写好的代码,一直沿用至今,直接上代码
SqlHelper源码帖出太大,已超出文章承受内容量,可私聊获取或到简书上查看。
以上可以放到自己的项目里,或者和其他工具类一起打包一下,打包好可以放到Nuget里,供自己用或别人用都可以。
再次说明下,笔者只是个数据分析师,专业方向是BI,不要指望笔者的代码能力有多强。仅仅给大家做了百度搬运工,仅作一些指路人角色。
Nuget发布自己的dll
有了以上的现成轮子使用,核心代码变得异常简单
using (SqlConnection sqlConnection = new SqlConnection(msSqlCnnString)) { sqlConnection.Open(); SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(); try { SqlHelper.ExecuteNonQuery(sqlTransaction, CommandType.Text, this.richTextBox1.Text); sqlTransaction.Commit(); AddCnnInfo(serverName, dbName, userName, pwd); MessageBox.Show("执行完成!"); this.Close(); } catch (Exception ex) { MessageBox.Show("SQL语句执行出错,出错原因为 " + ex.Message); sqlTransaction.Rollback(); } };
结语
此篇正式带领进入VSTO开发的轮子时代,想要实现什么功能,多多百度、Google,拿其他人已经做好的开源代码,在专业程序猿世界里,大把大把的热心人士为我们精心准备好了一切的底层,包括VSTO也是微软给我们准备的底层,希望Excel催化剂所分享的这一系列文章,也能成为各大VBA转VSTO开发者们的底层,可以拿来即用,再次地聚焦在自己的功能实现上。
页面更新:2024-03-10
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号