Datawindow.net 系列九

本文中使用了Datawindow.net2.5:
datawindow.net在vs2.5中,保存数据,很像pb,使用UpdateData就可以了,对于使用过pb的人来说,还是非常方便的。
UpdateData(true,true);
同时export各种format的文件,也是非常方便的
dw.SaveAs(@"c:/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls", Sybase.DataWindow.FileSaveAsType.Excel, false);
dw.SaveAs(@"c:/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf", Sybase.DataWindow.FileSaveAsType.Pdf, false);
dw.SaveAs(@"c:/image" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".doc", Sybase.DataWindow.FileSaveAsType.Doc, false);
dw.SaveAs(@"c:/image" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".html", Sybase.DataWindow.FileSaveAsType.Html, false);
这里,仅仅列举四种格式,具体可以查看Sybase.DataWindow.FileSaveAsType,确实挺方便;
但是,出现另外一个问题,一度困扰着我,就是数据库字符集的问题,由于多种原因,我的数据库字符选择,如图示:
在database里,使用select是看不到中文的,只是看到,类似乱码的latin编码,当然你的database如果使用简体中文字符集,那么完全不必理会我这一部分的内容,因为对你没有用处了。
不过还是有解决方法的,只有进行两次转换即可:呈现数据时,保存数据时;
protected void dw_RowRetrieved(object sender, Sybase.DataWindow.RowRetrievedEventArgs e)
{
  int rowNum = e.RowNumber;
  int colNum = dw.ColumnCount;
  for (int i = 1; i <= colNum; i++)
    {
      string colName = dw.Describe("#" + i + ".Name");
      string dwStrTemp = dw.GetItemString(rowNum, Convert.ToInt16(i));
      dw.SetItemString(rowNum, Convert.ToInt16(i), ParseString(dwStrTemp));
    }
}

int rowCount = dw.RowCount;
int colCount = dw.ColumnCount;
for(int i=1;i<=rowCount;i++)
{
    for (int j = 1; j <= colCount; j++)
    {
string colValue = dw.GetItemString(i, Convert.ToInt16(j));
string colValueDB = ParseSql(colValue);
dw.SetItemString(i, Convert.ToInt16(j), colValueDB);
    }
}
dw.UpdateData(true, true);
上面提到的ParseString, ParseSql:
1252--english,950--繁体中文,936--简体中文
static public int databaseCharset = 1252;
static public int displayCharset = 950;
static public string ParseString(string str)
{
    byte[] b = Encoding.GetEncoding(databaseCharset).GetBytes(str);
    return Encoding.GetEncoding(displayCharset).GetString(b);
}
static public string ParseSql(string str)
{
    byte[] b = Encoding.GetEncoding(displayCharset).GetBytes(str);
    return Encoding.GetEncoding(databaseCharset).GetString(b);
}
到此,问题全部解决啦。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值