`
liuyp2003
  • 浏览: 54591 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JS脚本通过ADO连接MySQL

阅读更多


我一向都习惯用JS脚本作为常用的工具性语言,比如写一些导入导出程序,管理程序等等。数据库这块大部分用的都是SQL Server,ADO连接是最常用的了,从来也没发生过什么问题,呵呵。

今天想弄一些数据到本机的MySQL数据库里面,大概有几万条吧,还是用脚本吧,反正自己早已经写了一些脚本库并注册为组件了,直接用就行。不过脚本库里面的数据库连接这块缺省用的是SQL Server,要连MySQL还得改改,上网查了查,很容易就找到了方案。

1、安装MySQL ODBC Driver,这个网上比较多,随便找一个安装下载了便是,我用的是3.51 版本。安装完毕以后管理工具》ODBC数据源》驱动程序里面会多一个驱动:MySQL ODBC 3.51 Driver

2、ADO连接字符串:

MySQL的是:

sql = "driver={MySQL ODBC 3.51 Driver};server=" + this.server + ";port=3306;option=131072;stmt=;database=" + this.db + ";uid=" + this.user + ";pwd=" + this.passwd;

SQL Server的是:

sql = "driver={sql server};server=" + this.server + ";database=" + this.db + ";uid=" + this.user + ";pwd=" + this.passwd;

于是ADO连接就这么搞定了,其它程序由于都是用标准的ADO方式,所以不用做任何改动就可以用了,^_^

不爽的是:原以为只有在做JAVA程序开发的时候才有中文问题,没想到在Windows下用JS+MySQL这个可恶的中文问题也折磨的我够呛:(

无论是INSERT/UPDATE/SELECT一旦碰到中文字符都会出现异常或者乱码,后来将数据库字符集换成UTF-8试了试就可以插入了。不过由于我的MySQL Front以及其它数据库字符集缺省设置的是GB2312,因此就不能直接浏览数据库里面的中文了,当然也很不爽了。

仔细阅读了一下MySQL 5.x的中文手册的10.3.6连接字符集和校对一节,终于发现原因所在。有3个变量可以用来控制字符集:

   * character_set_client ,这是用户告诉MySQL查询是用的什么字符集。
    * character_set_connection ,MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。
    * character_set_results , MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户。


于是在建立完SQL连接之后,即调用SQL语句:

set character_set_client = gb2312
set character_set_connection = gb2312
set character_set_results = gb2312


设置如上三个变量,一切就迎刃而解了。此外,更简单的办法就是调用语句:

set NAMES gb2312


替代上面3句。

再回过头来看为什么MySQL配置问卷my.ini里面已经设置了参数default-character-set=gb2312了,还会出现这种情况呢?

可能是ADO调用MySQL ODBC 3.51 Driver驱动访问MySQL时缺省的字符集用的时UTF-8吧,而ADO对象又没有提供参数、方法或者连接字符串来更改缺省字符集,所以才有上面的情况出现。

反思一下:每个人在做JAVA、MySQL等程序时基本上都会碰到很多字符集、编码的问题,而做ASP/.NET、SQL Server开发时缺少有人碰到(通过google/baidu搜一下看结果数量就知道了),这是为什么呢?

可能是灵活性的代价必然就是复杂性吧……
分享到:
评论

相关推荐

    ASP.NET+MySQL人事管理系统

    因为老师不允许用GridView等数据控件,所以都是用代码(好像是叫ADO.NET来着)操作数据库的,表格下拉框什么的花了很大的功夫,我想想,用了代码块,拼接HTML字符串,JS插数据等方法。 听课是不可能听课的,整个实验...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP程序开发范例宝典III

    境配置、表单及表单元素的应用、CSS与JavaScript脚本的应用、验证控件、构建PHP动态网页、PHP与MySQL的数据库技术、PHP与其他数据库技 术、SQL查询相关技术、MySQL高级应用技术、字符串的处理技术、PHP面向对象编程...

    参考手册全集经典

    微软Microsoft Windows脚本技术[全面].CHM 微软Jet SQL参考手册.chm 微软Asp参考手册.chm 微软ADO中文帮助.CHM XML官方指南中文版.chm xmlhttp.CHM SQL语法大全.chm prototype.js中文手册.chm MySQL手册.chm jQuery....

    W3SCHOOL中文离线版教程

    包含HTML教程、浏览器脚本、服务器脚本、XML教程、Web Services、.NET分类,具体内容如下:HTML、HTML5、XHTML、CSS、CSS3、TCP/IP、JavaScript、HTML DOM、jQuery、jQuery Mobile、AJAX、JSON、DHTML、E4X、WML...

    LeverConfigApi:一个可动态配置WebApi的Api配置系统

    LeverConfigApi一个不用写程序就可动态配置WebApi接口的API配置系统原理使用Lua脚本作为配置api时的一些简单业务逻辑处理,包括提交参数的判断、sql的构建、返回数据的整合等。对于复杂的业务逻辑通过开发扩展插件...

    计算机精品学习资料大放送

    IT认证类: 软件水平 等级考试 思科认证 微软认证 Sun认证 Linux认证 IEEE认证 Java技术: Java SE Java EE Java ME .Net技术: C#语言 VB.NET ASP.NET VC.NET .NET框架 ADO.NET Silverlight 开发语言: C/C++ VC/...

    asp.net知识库

    完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...

    JAVA上百实例源码以及开源项目源代码

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,...

    java源码包---java 源码 大量 实例

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,...

    java源码包2

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码...

    java源码包3

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码...

    java源码包4

     还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本...

Global site tag (gtag.js) - Google Analytics