如何在c#的dll中嵌入txt文件,并且把文件的内容读取出来?

如何在c#的dll中嵌入txt文件,并且把文件的内容读取出来?,第1张

实现方法如下:

(1)新建一个文本文件Message.txt。这个文件将作为资源嵌入到DLL中

(2)在Visual Studio中创建一个“类库”项目。项目名称:ClassLibrary1

(3)在解决方案资源管理器中,选中项目ClassLibrary1-->项目-->ClassLibrary1 属性

在 ClassLibrary1属性设置页中鼠标单击 资源-->“……单击此处可创建一个”

鼠标单击  添加资源-->添加现有文件

在对话框中选择(1)创建的文本文件Message.txt

文本文件导入后,资源中增加了 一项 Message

至此,文本文件Message.txt已经成功导入!

(4)获取文本文件的内容

打开Class1.cs,编写以下代码

using System

using System.Collections.Generic

using System.Linq

using System.Text

namespace ClassLibrary1

{

    public class Class1

    {

        /// <summary>

        /// 获取资源中文本文件的内容

        /// </summary>

        /// <returns>文本文件内容</returns>

        public string GetTextFromResource()

        {

            return Properties.Resources.Message

        }

    }

}

(5)编译 ClassLibrary1 项目,生成 ClassLibrary1.dll

==================================================

以下为测试项目,测试 ClassLibrary1.dll

(1)在Visual Studio中新建一个“控制台应用程序

(2)添加对 ClassLibrary1.dll 的引用

在解决方案资源管理器中,选中ConsoleApplication1项目,鼠标点击菜单 项目-->添加引用

在“引用管理器”对话框中,点击  浏览-->定位到 ClassLibrary1.dll -->添加

(3)Program.cs

using System

using System.Collections.Generic

using System.Linq

using System.Text

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            ClassLibrary1.Class1 c = new ClassLibrary1.Class1()

            string text = c.GetTextFromResource()

            Console.WriteLine(text)

        }

    }

}

(4)运行效果

成功地从DLL中读出了文本文件内容!

嵌入式SQL程序的VC+SQL server 2000实现的环境配置

嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化2、预编译3、编译4、连接5、运行。下面就其中重要的的 *** 作方法给以详细说明。

1、环境初始化

(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件)如果 *** 作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。)

( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。

(3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。

( 4) VC++6.0环境配置。具体配置分为如下三步[:

①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。

②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。

③project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。

2、预编译

C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。

Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.

预编译程序nsqlprep的常用语法为:

nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password

其中ESQL_File是要预编译的嵌入式SQL程序/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程/DB server_name.database_name指明要连接的服务器以及数据库名称/PASS login.password给出登录名及相应的口令.

下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)

#include<stdio.h>

void main()

{

EXEC SQL BEGIN DECLARE SECTION

char first_name[40]

char last_name[]="White"

EXEC SQL END DECLARE SECTION

EXEC SQL CONNECT TO hushaobo.pubs

USER sa.1982

EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name

EXEC SQL DISCONNECT ALL

printf("first name: %s \n",first_name)

}

在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982

则生成demo.c,将该文件添加到VC工程中编译即可。

3、编译,连接与运行

在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:

方法1:把这两个文件拷贝到 *** 作系统目录下的system32子目录中。

方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值新路径与已有路径间用;间隔。

注意调适程序时,文件名中不要包含cursor,否则可能会出错。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11846037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存