我用C#编写了一个sql的数据库通用访问类(未使用强名称),编译生成了相应的dll文件,现在的问题是:1.如何正确注册才能在ASP页面里面调用该dll呢?
2.如何卸载已经注册的该dll文件?(因为修改了以后还要注册,好像不能覆盖的)
3.我在类里面定义的有 DataSet,SqlDataReader和DataTable 三种类型的返回记录集,
那么我在ASP里面改如何取得该记录集的数据呢? 难道是把记录集返回给一个普通的变量,
还是返回给一个已经定义好的 RecordSet 的变量呢?网上介绍了很多方法,但是注册都不成功,这里想请教一个完整的办法和步骤。目前我使用的注册办法是 regasm D:\SqlHelper.dll /tlb:D:\SqlHelper.tlb /CodeBase 但是注册失败。如上,请教大家!! 谢谢先。
2.如何卸载已经注册的该dll文件?(因为修改了以后还要注册,好像不能覆盖的)
3.我在类里面定义的有 DataSet,SqlDataReader和DataTable 三种类型的返回记录集,
那么我在ASP里面改如何取得该记录集的数据呢? 难道是把记录集返回给一个普通的变量,
还是返回给一个已经定义好的 RecordSet 的变量呢?网上介绍了很多方法,但是注册都不成功,这里想请教一个完整的办法和步骤。目前我使用的注册办法是 regasm D:\SqlHelper.dll /tlb:D:\SqlHelper.tlb /CodeBase 但是注册失败。如上,请教大家!! 谢谢先。
解决方案 »
- asp.net 一些小问题,求助!!!!!
- 命名空间“System.Data”中不存在类型或命名空间名称“TypedTableBase”(是缺少程序集引用吗?)
- PNG 格式图片为什么在 IE6 中不显示透明,怎么办??
- 一个高难度的问题,没分,纯粹讨论
- 一个Form-based验证的问题!
- 谁可以给我点拨一下,这几个控件
- 未能加载的错误!!!!!!!!!!
- 部署水晶报表出现问题 - 我打包后,怎么会没有rpt文件,是不是少了哪一步?
- 小女子求教:我的treeview控件是不是坏掉了??急~~
- 如何将DataGrid的分页码显示在数据的顶部而不是底部???
- 用的aspx程序。在.inc文件中如何写可获取URL地址。<%Reqeust.Url.ToString()%>无效
- 急,在线等,做的网页上面的图片别人有些看不到,但是点右键点"显示图片"又能显示出来,
我看过相关的文章,但是没有实际操作过.,网上有相关示例,1,2如果你的dll是一个com组件,那么asp就能搞,3 如果是com组件,那么可以和他暴露出来的属性,方法一样用
ds.tables(0).什么什么
将DLL 引用到项目中就可以了.
如果需要部署到CGA,就必须要签强名称才行..部署方法也很简单,直接打开C盘windows文件夹找到assembly文件夹,把你写好的DLL拖进去就可以了.强名称在使用的时候更安全,更不会出现冲突和错误.
不过c#注册确实是别具一格,一般的com都是注册到注册表里,.net注册到framework
如何才能签强名称呢,拖到assembly文件夹下面,就可以直接使用了么?(在asp页面里面调用,在asp页面里面是否需要其他什么设置呢)
随便一搜就有.
http://msdn2.microsoft.com/zh-cn/library/ms235305(vs.80,d=toc).aspx
using System.Data;
using System.Data.SqlClient;
using System.EnterpriseServices;
/// <summary>
/// DataAccess 的摘要说明。
/// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者 DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
/// </summary>
public class DataAccess:ServicedComponent
{
#region 属性
protected static SqlConnection conn = new SqlConnection();
protected static SqlCommand comm = new SqlCommand();
#endregion
public DataAccess()
{
//init();
}
#region 内部函数 静态方法中不会执行DataAccess()构造函数 /// <summary>
/// 打开数据库连接
/// </summary>
private static void openConnection()
{
if (conn.State == ConnectionState.Closed)
{ string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = d:\\ASP\\db1.mdb";// &Server.MapPath(db);
conn.ConnectionString = strConn; // conn.ConnectionString = SysConfig.ConnectionString;
comm.Connection = conn;
try
{
conn.Open();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
}程序集里面加了如下的强签名: [assembly: AssemblyKeyFileAttribute("SqlHelper.snk")]程序集里面修改了ComVisible 为true: [assembly: ComVisible(true)]编译并生成相应的dll文件,SqlHelper.dll另外手动生成了SqlHelper.dll文件对应的tlb文件,命令如下: tlbexp SqlHelper.dll /out: SqlHelper.tlb 最后注册dll文件,命令是:(在.net命令行)RegAsm SqlHelper.dll /tlb:SqlHelper.tlb /codebase
系统给的提示信息是:SqlHelper.tlb 库被正常登录,并没有关于dll文件被成功注册的信息。调用代码是:set conn = Server.CreateObject("SqlHelper.DataAccess")
。该行报错,提示找不到服务器对象。
请大家帮我分析一下
http://www.haoyu63.com/article.asp?id=133
注册 不是用这个?regsvr32
http://siatom.spaces.live.com/blog/cns!4131942A83EE8648!153.entry
我用的数据库操作类也是封装起来的,像上面那样做就可以直接使用。