难题一:
SqlCommand对象能够执行删除条件约束的语句吗?
cmdClient.Connection = connClient;
cmdClient.CommandText = "alter table CW drop constraint FK_CW_CK";
cmdClient.ExecuteNonQuery();
条件约束FK_CW_CK在在数据库中绝对存在,当执行完这两句时,提示错误信息"条件约束FK_CW_CK"不存在,可是打开数据库一看,条件约束已经被删除了,但为什么会出现这种提示错误,如何解决在执行完这几条语句时不报错?难题二:
在webservice服务器端与winform架构的系统中,如何从客户端取得服务器端配置文件中的连接字符串?在客户端的窗体代码中写程序实现.难题三:
在webservice服务器端与winform架构的系统中,在服务器端建立的类型化的数据集,如何把其序列化成二进制字节流的方式传回,通过建立服务.
[WebMethod]//返回服務器端的數據集序列化並壓縮後的二進制字節流
    public byte[] GetServerDB()
    {
        SqlConnection conn = new SqlConnection(FLServerConnString);
        conn.Open();
        dsServerDB dsServer = new dsServerDB();//dsServerDB类型化的数据集,上面绑定有服务器端数据库的表
        string sql = "select * from CW";
        SqlDataAdapter da = new SqlDataAdapter(sql,conn);
        da.Fill(dsServer,"CW");
        return serverbase.SerializationDataset(dsServer);        
    }
在客户端把其再解压缩,反序列化成数据集,但是在执行序列化的过程中发生错误,如果不是类型化的数据集则正确,这是为什么?
请高手帮帮忙?

解决方案 »

  1.   

    问题一
    在执行
    alter table CW drop constraint FK_CW_CK
    语句之前先判断该元素是不是存在,还有看一下是否执行两边。你也可以用SQL Server Profiler 跟踪一下执行了那些SQL 语句。问题二
    这个问题我不是很理解,你指的是WebService的链接字符串还是数据库联接字符串,如果是前者,正常的做法应该是在客户端配置文件中进行配置,引用WebService的时候通过配置文件url实现。
    参考
    http://blog.csdn.net/zhzuo/archive/2005/04/06/338605.aspx如果是其他配置文件信息,只要通过WebService再提供一个返回信息的接口就行。问题三
    比较简单的处理是把把类型化DataSet,做为非类型化DataSet进行处理。不过这里的强类型属性方法会消失。可以试一下,是不是你的客户端没有对强类型数据集类型的引用。另外就是.net 2.0中的DataSet有自带的二进制序列化功能,可以试一下。还有,请检查一下你的代码,在处理类型化数据集时是否有一些地方不对,可以进行调试一下。
      

  2.   

    问题一从代码看不出问题来,可能多次调用造成的。
    问题二可写在webservice里写一个方法读取数据库配置信息,客户端调用这个方法。
    问题三原因在客户端不存在类型化数据集的定义,反序列化时就会报错。可以同时在服务器端和客户端引用这个类型化数据集,也可以在客户端定义类型化数据集,从服务器端取回数据之后,用数据集的merge方法填充到类型化数据集中。