动态库与静态库

随笔在自己博客时间太长了,看见点击量太少就贴出来主动分享呢!借马桶哥的花献佛存储进度:

  在编写程序的时候,平日会境遇重重再一次或常用的豆蔻梢头部分,为了利用和护卫方便,将这个部分封装成函数库。函数库可分为静态库和动态库

setANSI_NULLSONsetQUOTED_IDENTIFIERONgocreateproc[dbo].[p_db_wsp]@dbnamevarchar(50),--数据库名@pathvarchar(100),--实体类所在目录名,如D:/My/Models@namespacevarchar(50)--实体类命名空间,默认值为Modelsas--判断数据库是否存在if(db_id(@dbname)isnotnull)beginif(isnull(@namespace,'')='')set@namespace='Models'--允许配置高级选项EXECsp_configure'showadvancedoptions',1--重新配置RECONFIGURE--启用OleAutomationProceduresEXECsp_configure'OleAutomationProcedures',1--启用xp_cmdshell,可以向磁盘中写入文件EXECsp_configure'xp_cmdshell',1--重新配置RECONFIGUREdeclare@dbsqlvarchar(1000),@tablenamevarchar(100)set@dbsql='declarewspcursorforselectnamefrom'+@dbname+'..sysobjectswherextype=''u''andname''sysdiagrams'''exec(@dbsql)openwspfetchwspinto@tablename--使用游标循环遍历数据库中每个表while(@@fetch_status=0)begin--根据表中字段组合实体类中的字段和属性declare@nsqlnvarchar(4000),@sqlvarchar(8000)set@nsql='select@s=isnull(@s+char(9)+''private'',''usingSystem;'+char(13)+'usingSystem.Collections.Generic;'+char(13)+'usingSystem.Text;'+char(13)+'namespace'+@namespace+char(13)+'{'+char(13)+char(9)+'publicclass'+@tablename+char(13)+'{''+char(13)+char(9)+''private'')+casewhena.namein(''image'',''uniqueidentifier'',''ntext'',''varchar'',''ntext'',''nchar'',''nvarchar'',''text'',''char'')then''string''whena.namein(''tinyint'',''smallint'',''int'',''bigint'')then''int''whena.namein(''datetime'',''smalldatetime'')then''DateTime''whena.namein(''float'',''decimal'',''numeric'',''money'',''real'',''smallmoney'')then''decimal''whena.name=''bit''then''bool''elsea.nameend+''''+lower(''_''+b.name)+'';''+char(13)+char(9)+''public''+casewhena.namein(''image'',''uniqueidentifier'',''ntext'',''varchar'',''ntext'',''nchar'',''nvarchar'',''text'',''char'')then''string''whena.namein(''tinyint'',''smallint'',''int'')then''int''whena.name=''bigint''then''long''whena.namein(''datetime'',''smalldatetime'')then''DateTime''whena.namein(''float'',''decimal'',''numeric'',''money'',''real'',''smallmoney'')then''decimal''whena.name=''bit''then''bool''elsea.nameend+''''+b.name+char(13)+char(9)+''{''+char(13)+char(9)+char(9)+''get{return''+lower(''_''+b.name)+'';}''+char(13)+char(9)+char(9)+''set{''+lower(''_''+b.name)+''=value;}''+char(13)+char(9)+''}''+char(13)from'+@dbname+'..syscolumnsb,(selectdistinctname,xtypefrom'+@dbname+'..systypeswherestatus=0)awherea.xtype=b.xtypeandb.id=object_id('''+@dbname+'..'+@tablename+''')'execsp_executesql@nsql,N'@svarchar(8000)output',@sqloutputset@sql=@sql+char(9)+'}'+char(13)+'}'--print@sqlDECLARE@errINT,@fsoINT,@fleExistsBIT,@fileVARCHAR(100)SET@file=@path+'/'+@tablename+'.cs'EXEC@err=sp_OACreate'Scripting.FileSystemObject',@fsoOUTPUTEXEC@err=sp_OAMethod@fso,'FileExists',@fleExistsOUTPUT,@fileEXEC@err=sp_OADestroy@fsoIF@fleExists!=0exec('execxp_cmdshell''del'+@file+'''')--存在则删除exec('execxp_cmdshell''echo'+@sql+''+@file+'''')--将文本写进文件中set@sql=nullfetchwspinto@tablenameendclosewspdeallocatewspprint'生成成功!'endelseprint'数据库不存在!'

静态库

  编写制定比较简单,和普通源文件编写制定雷同,项目性质中的配置项目设置为静态库就能够,但要把库保存到调用文件的目录下,且每趟改革库文件都要再生成并保存到调用文件目录下。

调用示例:

  1、项目安装:将品种设置为静态库类型

exec[dbo].[p_db_wsp]'数据库名','如果你的项目在那个文件夹下面就直接写物理路径。例如:D:/My/Models','你需要给定的命名空间名称'

图片 1

分选系列性质

图片 2

设置项目布置项目为静态库

选用:张开应用方案,点击施工方案财富管理器的“展现全体文件”看见变化的文书后鼠标右键选中,满含在品种中!1分钟内Model生成完成。

  2、代码编写:编写库文件代码,和源文件编写制定肖似

图片 3

库文件源码

  3、生成库文件:将源文件生成为库文件,生成的库文件可在缓和方案文件夹中的Debug文件夹中观望

图片 4

生成库文件

图片 5

打开“解决方案”文件夹中(是“建设方案”文件夹,不是系列文件夹)

图片 6

在能源微处理机中查看生成的静态库文件

  4、导入并使用库文件:

图片 7  将静态库文件复制到调用的类别文件夹下

图片 8

引进静态库文件,并调用文件中的方法

  5、启动测验

图片 9

调用成功

PS:要遵照顺序,改善了库源码,要重复2~4步