火木棉

木棉道 . 积硅步 至千里

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  36 随笔 :: 6 文章 :: 42 评论 :: 4 引用

公告

2007年12月5日 #

   前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 。但是实际上并不是这样的,好在处理的数据操作多时 修改, 插入, 删除,否则的话问题就有点打了,都是些基础的知识,但是很重要个人觉得有必要记下来。

     ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete  语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,例如对数据库共添加一个数据表的Create操作,当创建数据表成功时返回-1,如果操作失败的话(如数据表已经存在)往往会发生异常,所以执行这种操作时最好用try--catch--语句来容错。

  例如用ExecuteNonQuery()方法执行create操作

   

    SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=PSDB;Integrated Security=SSPI");
        
   string str = "CREATE TABLE aaa ( " +
  "[ID] [int] IDENTITY (1, 1) NOT NULL , " +
  "[BasicID] [int] NULL ," +
  "[AdoptedName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[AdoptedSex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[AdoptBirthday] [smalldatetime] NULL ," +
  "[AdoptedType] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[ApprTime] [smalldatetime] NULL ," +
  "[Remark] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL " +
") ON [PRIMARY]   ";     

  SqlCommand comm = new SqlCommand(str, conn);
        int i = 10;
        try
        {
            conn.Open();
            i = comm.ExecuteNonQuery();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

        Response.Write(i.ToString());

       如果执行成功的话 返回的值为-1,如果数据表已经存在的话返回异常:数据库中已存在名为 'aaa' 的对象。

 

posted @ 2007-12-05 20:37 火木棉 阅读(13799) 评论(10) 编辑

  
     前些日子在安装报表工具是出现了程序集加载不上的问题于是法帖子求助csdn论坛,但是很长时间了,最后还是自己恢复了自己,问题解决了,把它放上来看有没有朋友出现相同的问题,供参考。

 

 发表于:2007-12-01 21:54:45 楼主
       请教
       在现有的vs2005 和sql server 2005 express 没有SQL Server Business Intelligence Development Studio执行工具 ,我就在微软下了个SQLEXPR_TOOLKIT_CHS.EXE 工具包安装SQL Server Business Intelligence Development Studio,但是按照默认 Development Studio 相关的文件是安装在 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\文件下的并且要引用devenv.exe来执行,其实就是引用与 Visual Studio 相同的执行文件,但是我在装vs2005的时候,默认把它装到了D盘,所以SQL Server Business Intelligence Development Studio运行时找不到devenv.exe文件,我将它的引用地址改为vs2005中devenv.exe的文件夹但是打开vs2005时还是不能创建商业智能项目,提示错误是:未能加载文件或程序集"Microsoft.ReportingServices.Designer,Version=9.0.242.0,Culture=nentral,PublicKeyToken=89845dcd8080cc91"或它的某一个依赖项。系统找不到指定的文件。 我像是没有引用程序集的问题吧 ,希望高手帮助!

(或者有些时候启动vs2005程序是会提示DataWarehouse VSIntegration layer ({4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1})未加载。请与程序包供应商联系以获得帮助。如要尝试再次加载此包,请在命令提示处键入“devenv /resetskippkgs”错误)


发表于:2007-12-01 22:01:311楼 得分:0
         在处理上面的问题时 ,我想了个办法 就是将vs2005安装文件中的Common7\IDE\文件夹中除PrivateAssemblies和profiles两个文件夹外的所有的文件和文件夹都COPY到了C:\Program Files\Microsoft Visual Studio 8\Common7\IDE 文件夹下,然后直接开始-> sql server 2005 -> SQL Server BusinessIntelligenceDevelopment Studio来启动vs2005环境 并且创建报表成功,而且很多功能都没有问题,但是总觉得心里不太踏实,有没有其他好的解决办法,期待着高手帮助。


发表于:2007-12-05 14:25:172楼 得分:0
         等了这么长时间没有人回复阿 ,好在自己解决了,其实很简单就是手工将C:\Program Files\Microsoft Visual Studio 8\Common7\IDE 中的文件COPY道安装VS2005中的IDE中就可以了,开始的时候以为会将原来的文件覆盖损坏VS2005 现在看来没有问题了,因为C:\Program Files\Microsoft Visual Studio 8\Common7\IDE 中 PrivateAssemblies 和 Profiles两个文件中的信息和VS2005中的信息不重复直接覆盖追加就OK了。然后将SQL Server Business Intelligence Development Studio 关联到VS2005 的devenv.exe文件
不管从SQL Server Business Intelligence Development Studio 还是从visual studio 2005 启动添加报表项目都ok!


posted @ 2007-12-05 14:48 火木棉 阅读(1246) 评论(8) 编辑