C#生成com组件,供asp调用
一、vs2005—新建项目—C#类库
类库源码如下(包含接口,类,事件接口):
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data.SqlClient;
using System.Runtime.InteropServices;
namespace entryclass
{
//Guid值的产生:Program FilesMicrosoft Visual Studio 8Common7Toolsguidgen.exe,运行它,选中单选4,点“New Guid”,点“Copy”,进入类库,粘贴即可
//类接口
[Guid("F2257E71-ECC9-47ef-A065-F5B530F24B07")]
public interface ini_mng_Interface
{
[DispId(1)] //固定写法,索引号从1开始
string ini_dme(string entryuser, string entrypass, string agentname, str ......
C#生成com组件,供asp调用
一、vs2005—新建项目—C#类库
类库源码如下(包含接口,类,事件接口):
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data.SqlClient;
using System.Runtime.InteropServices;
namespace entryclass
{
//Guid值的产生:Program FilesMicrosoft Visual Studio 8Common7Toolsguidgen.exe,运行它,选中单选4,点“New Guid”,点“Copy”,进入类库,粘贴即可
//类接口
[Guid("F2257E71-ECC9-47ef-A065-F5B530F24B07")]
public interface ini_mng_Interface
{
[DispId(1)] //固定写法,索引号从1开始
string ini_dme(string entryuser, string entrypass, string agentname, str ......
这两个数据类型是我们在学习C#语言的过程中数据比较难的两个数据类型,不过他们很重要,所以有必要拿出来说说他们的使用方法和不同之处,希望对你有所帮助。
先总的来说:
通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).
有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一个引用,他指向变量在内存中的位置.当引用被修改时,修改的是内存中的值,因此变量的值可以将被修改.当我们调用一个含有引用参数的方法时,方法中的参数将指向被传递给方法的相应变量,因此,我们会明白,为什么当修改参数变量的修改也将导致原来变量的值.
Ref指明了方法中使用的是引用型参数,引用型参数不开辟新的内存区域。当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递该方法。引用型参数通常已经初始化。
如
int i=1,j=2;//初始化 &n ......
这两个数据类型是我们在学习C#语言的过程中数据比较难的两个数据类型,不过他们很重要,所以有必要拿出来说说他们的使用方法和不同之处,希望对你有所帮助。
先总的来说:
通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).
有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一个引用,他指向变量在内存中的位置.当引用被修改时,修改的是内存中的值,因此变量的值可以将被修改.当我们调用一个含有引用参数的方法时,方法中的参数将指向被传递给方法的相应变量,因此,我们会明白,为什么当修改参数变量的修改也将导致原来变量的值.
Ref指明了方法中使用的是引用型参数,引用型参数不开辟新的内存区域。当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递该方法。引用型参数通常已经初始化。
如
int i=1,j=2;//初始化 &n ......
1. 程序如下:
string str = "Create Database " + "DBname";
string con = "Data Source=10.0.0.249\\sql2005;Initial Catalog=master;Persist Security Info=True;User ID=sa;Password=sa";
SqlConnection myConn = new SqlConnection(con);
SqlCommand myCommand = new SqlCommand(str, myConn);
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
Console.WriteLine("SQL � ......
1. 程序如下:
string str = "Create Database " + "DBname";
string con = "Data Source=10.0.0.249\\sql2005;Initial Catalog=master;Persist Security Info=True;User ID=sa;Password=sa";
SqlConnection myConn = new SqlConnection(con);
SqlCommand myCommand = new SqlCommand(str, myConn);
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
Console.WriteLine("SQL � ......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient; //引用命名空间
namespace DAL
{
/*******************************************************************************
* Name: SQLHelper
* File: SQLHelper.cs
* Description: 用于完成对数据库的相关操作
* Author: 雪狼
* DateTime: 2010年05月13日
*******************************************************************************/
public class SQLHelper
{
//设置连接字符串 —— SQL Server验证模式的连接字符串
//public static string strConn = @"server = PANLING;database = StudentMIS;uid = sa;pwd = sa";
//设置连接字符串 —— Windo ......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient; //引用命名空间
namespace DAL
{
/*******************************************************************************
* Name: SQLHelper
* File: SQLHelper.cs
* Description: 用于完成对数据库的相关操作
* Author: 雪狼
* DateTime: 2010年05月13日
*******************************************************************************/
public class SQLHelper
{
//设置连接字符串 —— SQL Server验证模式的连接字符串
//public static string strConn = @"server = PANLING;database = StudentMIS;uid = sa;pwd = sa";
//设置连接字符串 —— Windo ......
C#中对base的解释(引自MSDN):
base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
从静态方法中使用 base 关键字是错误的。
在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine";
public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the ......
C#中对base的解释(引自MSDN):
base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
从静态方法中使用 base 关键字是错误的。
在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine";
public virtual void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
class Employee : Person
{
public string id = "ABC567EFG";
public override void GetInfo()
{
// Calling the ......
下面这段C# 代码可以用来压缩和修复Access数据库,不管它是一个简单的".mdb"ACCESS数据库还是一个".mdw"网络共享数据库,这个过程和你在用MS Access应用程序中使用的"工具-数据库实用工具-压缩和修复"时执行的操作完全一样.实例代码使用了"迟绑定"(运行中在内存中建立COM对象),这样就不需要在工程中加入COM引用了,也不需要在PC上安装MS Access应用程序.只需要一个Jet引擎(Jet引擎包含在MDAC安装包中,在Windows NT4以后的版本中,系统已经自带了这个引擎).
C#操作ACCESS数据库的背景
不知你是否也厌烦了在工程中加入复杂的COM库引用,但我相信这个纯.NET代码将省去额外的交互操作, RCWs和COM引用.基本上,由于系统中安装的Microsoft类库的不同(例如:MS Office Object Library 9,10,11等等),我们也不知道用户PC中安装的Office版本,所以我们要通过ProgID来访问COM对象,而不能用CLSID.例如,当调用"Excel.Application",时,得到的是Excel,而不管系统中安装MS Office的版本,当在代码中加入"MS Excel 10 Object library"引用时,其实只是给应用程序加入了一个非常受限制的功能.所以我们使用System.Reflection和迟绑定.
1. 实例代码
只需调用CompactAccessDB函数即可压缩和修复目标数据库 ......
下面这段C# 代码可以用来压缩和修复Access数据库,不管它是一个简单的".mdb"ACCESS数据库还是一个".mdw"网络共享数据库,这个过程和你在用MS Access应用程序中使用的"工具-数据库实用工具-压缩和修复"时执行的操作完全一样.实例代码使用了"迟绑定"(运行中在内存中建立COM对象),这样就不需要在工程中加入COM引用了,也不需要在PC上安装MS Access应用程序.只需要一个Jet引擎(Jet引擎包含在MDAC安装包中,在Windows NT4以后的版本中,系统已经自带了这个引擎).
C#操作ACCESS数据库的背景
不知你是否也厌烦了在工程中加入复杂的COM库引用,但我相信这个纯.NET代码将省去额外的交互操作, RCWs和COM引用.基本上,由于系统中安装的Microsoft类库的不同(例如:MS Office Object Library 9,10,11等等),我们也不知道用户PC中安装的Office版本,所以我们要通过ProgID来访问COM对象,而不能用CLSID.例如,当调用"Excel.Application",时,得到的是Excel,而不管系统中安装MS Office的版本,当在代码中加入"MS Excel 10 Object library"引用时,其实只是给应用程序加入了一个非常受限制的功能.所以我们使用System.Reflection和迟绑定.
1. 实例代码
只需调用CompactAccessDB函数即可压缩和修复目标数据库 ......