
�0�2�0�2 MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)
�0�2�0�2�0�2
�0�2�0�2 我要编一段程序用来远程连接一个mysql数据库。我在数据库的本机上做试验,发现mysql_real_connect()的第二个参数设为"localhost"时可以正常连接,当改写为该机器的IP地址"192.168.100.2"时就连接失败。我在程序中写的原句为:
mysql_real_connect(mysql,"192.168.100.2","root","","mydns",0,NULL,0)。
�0�2�0�2�0�2 最初,我以为将"localhost"改为"192.168.100.2"之后要将第六个参数端口号写上,但还是不行。由于我是在Linux上做的,所以想也许需要将第七个参数unix_socket写上,结果还是不行。于是到google找解决方法,发现要远程连接mysql需要为mysql的指定帐号设置远程连接的权限。在我的程序中,就要为root设置这一权限。事实证明,我之前连接失败正是由于这个原因导致的。但问题是,网上被广泛转贴的方法是错误的,我照做后还不行,最后问了同学才解决的。下面我具体说一下,望大家不会再被误导。
�0�2�0�2�0�2 在mysql数据库中有一个mysql库,它里面包含一个user表,里面存有所有帐号及它们的权限及特征。对应我的user表中找到User项为root的,发现有两项,其Host项分别为localhost和localhost.localdomain。我们只需要把'localhost'改为'%'就可以让所有远程机器以root帐号登陆mysql服务器。也可以将'localhost'改为某一个ip地址,这样就可以在该地址的机器上登陆mysql服务器。这些都没有问题,只是网上被广为传颂的一个更改Host项的方法是错误的。他的方法是用update语句将指定User项的Host项改过来,如果想添加一个新的用于远程访问的帐号,就用insert语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:
�0�2�0�2�0�2�0�2 grant all privileges on mydns.* to'root'@'%';来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能 *** 作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
�0�2�0�2�0�2�0�2为了解决这个问题用了一下午的时间,费了不少周折,写出来也能让大家少走些弯路。
MYSQL *�0�2�0�2STDCALL mysql_real_connect(MYSQL *mysql,�0�2 //
const char *host,�0�2//连接主机
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 const char *user, //数据库用户
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 const char *passwd, //数据库密码
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 const char *db, //数据库
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 unsigned int port,//端口
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 const char *unix_socket,
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 unsigned int clientflag)
VC一可用的当写汉字到mysql 表里时就看到乱码, 要设字符编码.
mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312")//设字符编码
mysql_query(myData,"set names 'gbk'")设字符编码
远程连接oracle11g查询结果中文乱码是客户端和服务端编码设置不同引起的。1、检查windows7下面cmd里面sqlplus中oracle server端的字符集。
打开cmd,用sqlplus登录,输入下面SQL查询服务端的字符集。
2、去后台linux查看字符集编码,
(1),查看profile文件
[oracle@powerlong4 ~]$ vim/home/oracle/.bash_profile
export LANG=en_US.gbk
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
(2),查看数据库的userenv
SQL>select userenv('language') fromdual
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
改成ZHS16GBK就不会有中文乱码了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)