c#将指定数据库中所有数据由简体转换为繁体

数据|数据库|转换

/*
a、注意数据库编码要能兼容gb2312和big5,比如MySql中使用utf8
b、该代码采用遍历的方式,并用MySqlCommandBuilder进行批量更新,所以能转换的表必须包含主键,不包括主键的表则不能转换
c、引用了Microsoft.VisualBasic.dll进行简繁转换
*/
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualBasic;

namespace Gb2312ToBig5
{
    class Program
    {
        static void Main(string[] args)
        {
            //入口
            Console.WriteLine("请输入数据库所在IP:");
            string ip = Console.ReadLine().Trim();

            Console.WriteLine("请输入数据库名称:");
            string db = Console.ReadLine().Trim();

            Console.WriteLine("请输入登录数据库用户名:");
            string user = Console.ReadLine().Trim();

            Console.WriteLine("请输入登录数据库密码:");
            string psw = Console.ReadLine();

            string connectionString = "Data Source=" + ip + ";User ID=" + user + ";Password=" + psw + ";DataBase=" + db + ";Allow Zero Datetime=true;Charset=utf8;";

            Console.WriteLine("生成的数据库连接字符串为:{0},继续吗?(Y/N)", connectionString);
            if (Console.ReadLine().ToString().ToUpper() == "Y")
            {
                //包含所有表名称的DataTable
                DataTable dtAll = tableList(connectionString);
                if (dtAll != null)
                {
                    if (dtAll.Rows.Count > 0)
                    {
                        Console.Write("转换中,请稍候:");
                        for (int i = 0; i < dtAll.Rows.Count; i++)
                        {
                            dtConvert(dtAll.Rows[i][0].ToString(), connectionString);
                        }
                    }
                }
            }
        }

        //将DataTable中每行每列转为繁体
        private static void dtConvert(string dtName, string connectionString)
        {
            string sql = "";
            MySqlCommand cmd = null;
            MySqlDataAdapter da = null;
            DataTable dt = null;
            MySqlCommandBuilder builder = null;

            using (MySqlConnection conn = new MySqlConnection(connectionString))
            {
                try
                {
                    sql = "select * from " + dtName;
                    cmd = new MySqlCommand(sql, conn);
                    conn.Open();
                    da = new MySqlDataAdapter(cmd);
                    //添加主键映射
                    da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                    dt = new DataTable();
                    da.Fill(dt);

                    //遍历dt做替换
                    if (dt.Rows.Count > 0)
                    {
                        //如果表包含主键
                        if (dt.PrimaryKey.Length > 0)
                        {
                            #region 遍历
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                for (int j = 0; j < dt.Columns.Count; j++)
                                {
                                    if (dt.Columns[j].DataType.ToString() == "System.String")
                                    {
                                        if (dt.Rows[i][j] != null)
                                        {
                                            if (dt.Rows[i][j].ToString() != string.Empty)
                                            {
                                                dt.Rows[i][j] = getBig5(dt.Rows[i][j].ToString());
                                                Console.Write(".");
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion

                            builder = new MySqlCommandBuilder(da);
                            da.Update(dt);
                        }
                    }
                    //释放资源
                    builder.Dispose();
                    cmd.Dispose();
                    da.Dispose();
                    dt.Clear();
                    dt.Dispose();
                   
                }
                catch (Exception error)
                {
                    Console.WriteLine(error.ToString());
                }
                finally
                {
                    conn.Close();
                }
               
            }
        }

        //遍历每个表
        private static DataTable tableList(string connectionString)
        {
            DataTable dt = new DataTable();

            using (MySqlConnection conn = new MySqlConnection(connectionString))
            {
                //SHOW TABLES为MySQL列出所有表,如SQLServer请使用相关命令
                MySqlCommand cmd = new MySqlCommand("SHOW TABLES",conn);
                MySqlDataAdapter da = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();

                try
                {
                    conn.Open();
                    da.Fill(ds, "temp_tables");
                    dt = ds.Tables["temp_tables"];
                }
                catch (Exception error)
                {
                    Console.WriteLine(error.ToString());
                }
                finally
                {
                    conn.Close();
                }
            }

            return dt;
        }

        //简体转繁体
        private static string getBig5(string gb2312)
        {
            string big5 = "";
            if ((gb2312 != null) && (gb2312 != String.Empty))
            {
                gb2312 = gb2312.Trim();
                big5 = Strings.StrConv(gb2312,VbStrConv.TraditionalChinese,0);
            }
            return big5;
        }

    }
}

时间: 2025-01-20 11:33:31

c#将指定数据库中所有数据由简体转换为繁体的相关文章

SqlServer批量清理指定数据库中所有数据

  在实际应用中,当我们准备把一个项目移交至客户手中使用时,我们需要把库中所有表先前的测试数据清空,以给客户一个干净的数据库,如果涉及的表很多,要一一的清空,不仅花费时间,还容易出错以及漏删,在这儿我提供了一个方法,可快捷有效的清空指定数据库所有表的数据.仅供参考,欢迎交流不同意见. --Remove all data from a database SET NOCOUNT ON --Tables to ignore DECLARE @IgnoreTables TABLE (TableName

Mysql 导出数据库和指定表中的数据

参考地址:http://jingyan.baidu.com/article/b7001fe14240ab0e7282dde9.html [root@youo zw]# mysqldump -u root -p IpManage_v2 > zw_ipmanagev2.sql; 唉哟,不错哦!   MySQL导出指定表中的数据 要求: 1. 不导出创表的语句,因为表已经建好:默认会导出,先drop table然后create table: 2. 导出的insert语句加上ignore,允许重复执行:

MySQL数据库中部分数据损坏恢复过程

前几天因为MySQL数据库部分数据损坏原因,我尝试了下恢复数据,之后整理以下文档,供各位参考,以备各位同事以后如有类似问题,可以少走些弯路,尽快解决问题. 环境:Windows2003 数据库:MySQL 损坏数据文件名:function_products 将数据库内容物理文件直接导入到mysql\data下,每只表各3个文件,依次分别为:.frm .myd .myi.首先我第一想到的是去网上搜索,寻找类似的工具,试图通过工具来恢复已损坏的文件,于是我在google上查找,找到一款名为mysql

《R语言数据分析》——1.4 从数据库中导入数据

1.4 从数据库中导入数据 使用一个专用的数据库测试平台比根据需要从磁盘中导入文件效率要高很多,这是由数据库本身特性决定的: 对大数据表的访问速度更快 在数据导入R前,提供了更快更有效的数据聚集和筛选方法 相比电子表格以及R对象实现的传统矩阵模型,能够提供更加结构化的关系 数据模型来存储数据 提供对数据的连接及合并操作 在同一时间支持对多个客户端的并发远程访问 提供了安全和有限的访问 提供可扩展及可配置的数据存储后台 DBI包提供了数据库操作的接口,可以作为R和不同关系数据管理系统(Relati

oracle数据库中小写数据修改为大学数据

问题描述 oracle数据库中小写数据修改为大学数据 解决方案 用upper函数就可以了. 解决方案二: update 表A set sca_qp=upper(sca_qp) 解决方案三: update 表 set SCA_QP = Upper(SCQ_QP) 可以用Upper或者NLS_Upper Oracle函数(将整个字符串转换为大写) NLS_UPPER(x[y]) [功能]返回字符串并将字符串的转换为大写; [参数]x字符型表达式 [参数]Nls_param可选,指定排序的方式(nls

如何修复损坏数据库中的数据表

在使用MySQL过程中,各种意外会导致数据库表的损坏,而且这些数据往往是最新的数据,通常不可能在备份数据中找到.在使用阿里云数据库RDS产品中,RDS是如何修复损坏数据库中的数据表的呢?在传统数据库中,又是如何对其进行修复的呢?接下来,我们将做一个比较: 阿里云数据库RDS 阿里云提供的关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于飞天分布式系统和高性能存储,RDS 支持 MySQL.SQL Server.Po

《数据科学:R语言实现》——2.6 从数据库中读取数据

2.6 从数据库中读取数据 由于R会把数据读入内存中,因此这对于处理和分析小型数据集很合适.然而,由于企业每天积累的数据量要比个人的多得多,数据库文档在存储和分析大型数据时就变得更加常用.为了使用R访问数据库,我们可以使用RJDBC.RODBC或者RMySQL作为通信桥梁.在这一部分中,我们会介绍如何使用RJDBC连接存在数据库中的数据. 准备工作 在这一部分中,我们需要首先准备MySQL环境.如果你的机器(Windows)上有一个环境,你可以从MySQL通知器中检查服务器状态.如果本地服务器正

java-向mysql数据库中插入数据时报错

问题描述 向mysql数据库中插入数据时报错 public class categorydao { public static void save(category c) throws SQLException{ Connection conn=(Connection) DB.getConnection(); String sql=null; if(c.getId()==-1){ sql="insert into category values(null,?,?,?,?,?)"; }e

用vb语言创建的,可是留言之后,数据库中没有数据,留言列表没显示留言内容,是哪里错误啊???

问题描述 用vb语言创建的,可是留言之后,数据库中没有数据,留言列表没显示留言内容,是哪里错误啊???留言页面的代码:ImportsSystem.DataImportsSystem.Data.SqlClientImportsSystem.ConfigurationPartialClassDefault2InheritsSystem.Web.UI.PageProtectedSubButton1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)H