zoukankan      html  css  js  c++  java
  • Excel数据更新至Mysql数据库

    将EXCEL数据读出,该功能的实现代码网络上已重复出现多次,我贴出此段代码是因为遇到一个问题:

    导出Excel 数据
     private ArrayList GetXlsSheetNames(string filePath)
        {
            ArrayList list 
    = new ArrayList();

            
    string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + filePath + "; Extended properties=Excel 8.0;";

            OleDbConnection con 
    = new OleDbConnection(connectString);

            con.Open();

            DataTable sheetNames 
    = con.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { nullnullnull"TABLE" });

            con.Close();
            
            
    foreach (DataRow dr in sheetNames.Rows )
            {
                list.Add(dr[
    2]);
            }

            
    return list;
        }


        
    private List<Map> ExportToDataBase(string filePath,string sheetName)
        {
            List
    <Map> maps = new List<Map>();

            
    string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended properties=Excel 8.0";
            OleDbConnection con 
    = new OleDbConnection(connectString);

            OleDbCommand cmd 
    = new OleDbCommand("select * from [" + sheetName + "]", con);

            OleDbDataAdapter adapter 
    = new OleDbDataAdapter(cmd);

            DataSet ds 
    = new DataSet();

            adapter.Fill(ds);

            con.Close();
       }

    我Excel表中只有一个表格County,查询却返回两个表格名称:Country 和 Country$Print_Titles, 纳闷中,未找出问题

    在利用SQL语句:select * from [" + sheetName + "]"; 读取表格数据时从Country中可正常读取,而Country$Print_Titles试图读取时抛出异常。

    将读出的数据更新至MYSQL,使用存储过程时遇到的问题及解决方法总结如下:

    1.出错信息:Illegal mix of collations for operation ‘=’ 参考自:http://www.blogguy.cn/show-654-1.html

    简单的解决方法例示:

    select country_name from country where country_ID = binary(countryID) ;

    2.存储过程中参数在传入中文字符时出错,可通过 添加编码信息解决,如下:

    map_chineseName varchar(200) character set gb2312 

    3.修改Mysql默认编码格式:

    status-->查看  Server Characterset,Db characterset,Client characterset,Conn.characterset  修改可通过安装路径下的配置文件 my.ini记事本修改

    
    
    my.ini记事本修改
    # The default character set that will be used when a new schema or table is
    # created and no character set is defined
    default-character-set=gb2312
    # The following options will be read by MySQL client applications.
    # Note that only client applications shipped by MySQL are guaranteed
    to read this section. If you want your own MySQL client program to
    # honor these values, you need to specify it as an option during the
    # MySQL client library initialization.
    #
    [client]
    default-character-set=gb2312
    port=3306

    [mysql]
    default-character-set=gb2312

    注意:mysql 存储过程参数类型

    in: 存储过程内部修改此参数,外部不可见

    out:从存储过程内部传值给调用者,在存储过程内部,该参数初始化为NULL,无论调用者是否给存储过程参数设值

    inout:调用者可以通过inout参数传递给存储过程,还可以从存储过程内部传值给调用者

    具体可参考自:http://www.blogjava.net/nonels/archive/2008/10/09/233324.html

    mysql存储过程的写法可参见 http://www.cnblogs.com/hsqzzzl/archive/2008/02/21/1076646.html

  • 相关阅读:
    Java Web Start应用管理
    搭建java开发环境需要什么软件,怎么搭建java开发环境?
    制作WinPE
    今天看见.do网页,疑惑,这是什么文件??又是什么新技术??查了一下
    VC用ADO访问数据库全攻略
    ASP连接11种数据库语法总结
    asp.net里导出excel表方法汇总
    ASP.NET 发邮件方法
    ASP.NET 网站开发日常异常总汇(持续更新)
    javascript操作JSON
  • 原文地址:https://www.cnblogs.com/spirit/p/1605709.html
Copyright © 2011-2022 走看看