建立一个WebService,将业务层传入的DataSet传到数据层的数据库操作组件中。
DataSet中的第一个DataTable里面含有SqlConnection.ConnectionString
同时建立一个操作数据库的组件,现在的问题是定义的SqlConnection不能Close(),也不能Open()报错为:未将对象引用到对象的实例。不知道是怎么回事,不知道有没有哪位同行见过这个问题,谢谢,急求。
==============
注:数据库操作组件如果直接用应用程序进行调用,那就没有什么问题。
而我在WebService中调用的方法代码如下:
[WebMethod(Description = "执行数据库操作",EnableSession=false)]
public bool Execute(DataSet InDataSet,out DataSet OutDataSet)
{
//直接将InDataSet传入的内容传给相关的数据库组件中的InDataSet参数,并且返回OutDataSet
try
{
DataSet dsOut = new DataSet(); DirectoryInfo dinf = new DirectoryInfo(数据库组件所在的路径名称); Assembly assembly = Assembly.LoadFrom(数据库组件完整路径); object[] objarrgs = new object[]{InDataSet,dsOut};
bool bReturn = false; foreach(Type type in assembly.GetTypes())
{
if(type.Name == "OperateDB")
{
object obj = Activator.CreateInstance(type); InDataSet.WriteXml(@"D:\1\1.xml");//以下就是动态调用数据库组件的方法。
bReturn=(bool)type.InvokeMember("Execute",BindingFlags.Public | BindingFlags.InvokeMethod |BindingFlags.Instance ,null,obj,objarrgs);

}
} //将返回的dsOut传出
dsOut = (DataSet)objarrgs[1]; OutDataSet = dsOut; if(bReturn == true)
{
return(true);
}
else
{
return(false);
}
}
catch(Exception e)
{
throw(e);
}}

解决方案 »

  1.   

    检查以下SqlConnection已经创建实力了吗。
      

  2.   

    呵呵,我现在算是明白怎么回事了,利用了MSDN中提供的以下连接字符串不行"Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"
    必须将其改为:"Persist Security Info=False;User ID =sa;Initial Catalog=Northwind;Data Source=(local)";
    这样才能通过,真够晕的。散分贴!!!
      

  3.   

    楼主很高明.
    也可以定义两套sqlconn
    互相之间不影响.
      

  4.   

    看你的错误应该是sqlconnection没有取到正确的连接字符串
    所以导致实例化没有成功,无法使用