madengwei2008

To the end of the sea, the shore is the sky; up the top of the mountain, the peak is me.

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  9 随笔 :: 0 文章 :: 8 评论 :: 0 Trackbacks

2008年7月8日 #

      前段时间,我应公司派遣去云南给南方电网开发一个电力分析系统。因为我们的系统主要作用是统计计算和数据分析,所以本身并不采集基础数据,基础数据都是从别的第三方系统采集而来。还好的是大部分系统的数据采集都是通过WEB服务的方式,当时只有一家系统要求我们直接从他们的数据库里去读取(呵呵,这在电力部门一般是不被允许的,毕竟数据需要安全吗),大概是人家不愿意写接口吧。本来对于我们来说直接去数据库读取数据是最好不过了。但在这里问题出现了,采集的数据全部成了乱码,原因是字符集不相同。对方用的是Oracle9i数据库,字符集编码是WE8ISO8859P1。而我们用的是Oracle10g数据库,字符集编码是ZHS16GBK。由于权限的原因,我无法更改对方数据库字符集编码。我曾经尝试把我们的数据库修改成WE8ISO8859P1格式,但最后我们的数据库全部成了乱码。
    呵呵,看来修改字符集编码是不行的。我便给Oracle公司打电话咨询,漫长的等了一天,Oracle公司的回答是“很抱歉,只有一种方法可以解决,就是把对方的数据转换成txt”。晕!这是什么解决方案吗,我根本就没法用。。。。。。。。
    最好经过一半天的考虑,我决定使用程序来解决,既先把对方的数据转换成
GB2312格式,然后再进行采集。函数如下:
 
public static string ConverWE8ISO8859P1ToGB2312(string data)
  {
   return System.Text.Encoding.Default.GetString
   (System.Text.Encoding.GetEncoding("iso-88591").GetBytes(data));
  }

哈哈!经过一测试,问题解决了。

posted @ 2008-07-08 14:59 马伟 阅读(140) | 评论 (0)编辑

2008年7月4日 #

    几年前,我曾经搞了一小段时间DirectX开发,但最后因为工作的原因还是放弃了.直到今天,出于兴趣的原因,我又翻开DirectX的第一页....
  好了,我还是直接进入主题:
  首先是安装Microsoft DirectX SDK .
      然后选择工具-选项,打开选项框.

  
  最后选展开“项目和解决方案”,选择“VC++目录”,在右边的界面中有一个“显示以下内容的目录”下拉选择框,分别配置其中“包含文件”和“库文件”。
  如:"D:\Program Files\Microsoft DirectX SDK (June 2008)\Include"和"D:\Program Files\Microsoft DirectX SDK (June 2008)\Lib\x86
  

posted @ 2008-07-04 10:32 马伟 阅读(208) | 评论 (0)编辑

2008年7月3日 #

  平时我们截取字符串大多数都是在程序里进行,比如用split函数等.由于因为程序的需要和性能,我们更希望选择直接在查询语句里截取.
  例如我们现在需要截取电度参数表描述字段里"*"符号以前的字符串,包括"*":

  select distinct Substr(描述, 1, Instr(描述, '*', 1))  from 电度参数表

  如果不包括"*",如下:

  select distinct Substr(描述, 1, Instr(描述, '*', 1)-1)  from 电度参数表
  
  以上假设描述字段里只有一个"*"符号,现在如果有多个"*",我们要取第一个或者第二个"*"符号之前的字符串,不包括"*",如下:
  
  select distinct Substr(描述, 1, Instr(描述, '*', 1,1)-1)  from 电度参数表
   或者
   
  select distinct Substr(描述, 1, Instr(描述, '*', 1,2)-1)  from 电度参数表
  
  
  

   

posted @ 2008-07-03 10:12 马伟 阅读(256) | 评论 (0)编辑

2008年7月1日 #

     摘要: 前段时间,因为开发一个项目需要Oracle10g数据库,所以就快速写了一个Oracle的通用类,希望各位网友参考!using System;using System.Data;using System.Data.OracleClient;using System.Web.UI.WebControls;namespace SiFenManager.Util{/// <summary>//... 阅读全文
posted @ 2008-07-01 20:39 马伟 阅读(181) | 评论 (0)编辑

2008年6月12日 #

 

 //动态调整一维数组长度
    public static Array Redim(Array origArray, int length)
    {
        //确定每个元素的类型
        Type t = origArray.GetType().GetElementType();
        //创建新的数组
        Array newArray = Array.CreateInstance(t, length);
        //原数组中的数据拷贝到新数组中
        Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
        return newArray;
    }


    //动态调整二维数组长度
    public static Array Redim(Array origArray, params int[] lengths)
    {
        //确定每个元素的类型
        Type t = origArray.GetType().GetElementType();
        //创建新的数组
        Array newArray = Array.CreateInstance(t, lengths);
        //原数组中的数据拷贝到新数组中
        for (int i = origArray.GetLowerBound(0); i <= Math.Min(origArray.GetUpperBound(0), newArray.GetUpperBound(0)); i++)
            for (int j = origArray.GetLowerBound(1); j <= Math.Min(origArray.GetUpperBound(1), newArray.GetUpperBound(1)); j++)
                newArray.SetValue(origArray.GetValue(i, j), i, j);
        //在这里没有用Copy方法,如果用此方法,会把原数组中所有数据逐个拷贝到新数组中                 
        return newArray;
    }

    //如果在Redim方法中用Copy方法(动态调整二维数组长度)
    public static Array Redim(Array origArray, params int[] lengths)
    {
        int length = 1;
        for (int i = 0; i < lengths.Length; i++)
            length *= lengths;
        Type t = origArray.GetType().GetElementType();
        Array newArray = Array.CreateInstance(t, lengths);
        Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
        return newArray;
    }

posted @ 2008-06-12 14:07 马伟 阅读(287) | 评论 (0)编辑

2008年3月7日 #

     摘要: 前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。 最后请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
  阅读全文
posted @ 2008-03-07 18:15 马伟 阅读(1274) | 评论 (3)编辑

2008年2月18日 #

     摘要: 指针是C和C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C和C++语言的功能。
在本文中,主要分两部分对指针进行讨论。首先,基础篇讨论关于指针的内容和运算操作等,可以是读者对指针的知识有一定了解和认识;随后在使用篇中重点讨论指针的各种应用,揭破指针在日常编程中的精髓,从而使读者能够真正地了解、认识和使用指针。
  阅读全文
posted @ 2008-02-18 16:11 马伟 阅读(237) | 评论 (3)编辑

     摘要: 指针是C和C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C和C++语言的功能。
在本文中,主要分两部分对指针进行讨论。首先,基础篇讨论关于指针的内容和运算操作等,可以是读者对指针的知识有一定了解和认识;随后在使用篇中重点讨论指针的各种应用,揭破指针在日常编程中的精髓,从而使读者能够真正地了解、认识和使用指针。
  阅读全文
posted @ 2008-02-18 16:09 马伟 阅读(365) | 评论 (1)编辑

     摘要: 指针是C和C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C和C++语言的功能。
在本文中,主要分两部分对指针进行讨论。首先,基础篇讨论关于指针的内容和运算操作等,可以是读者对指针的知识有一定了解和认识;随后在使用篇中重点讨论指针的各种应用,揭破指针在日常编程中的精髓,从而使读者能够真正地了解、认识和使用指针。

  阅读全文
posted @ 2008-02-18 16:05 马伟 阅读(1486) | 评论 (1)编辑