admin 管理员组

文章数量: 887021


2023年12月19日发(作者:伦勃朗布光的造型特点)

'获得数据库连接

Public Function CreateConnection() As tion

On Error GoTo Handler

Dim cn As tion

Set cn = New tion

dTimeout = 60

tionString = " DRIVER={MySQL ODBC 5.1 Driver}; " _

& " Password=123; " _

& " Persist Security Info=True; " _

& " User ID=admin; " _

& " Server=192.168.0.10;" _

& " DataBase=db; " _

& " OPTION=3"

Set CreateConnection = cn

Set cn = Nothing

Exit Function

Handler:

MsgBox "数据连接时出现错误!", vbOKOnly + vbInformation

End Function

1、 进入mysql,创建一个新用户xuys:

格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";

grantselect,update,insert,deleteon*.***************.88.234identifiedby"xuys1234";

查看结果,执行:

use mysql;

select host,user,password from user;

可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用

主机名,

将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时

设为%。

update user set host = '%' where user = 'xuys';

2、

./mysqladmin -uroot -ppwd reload

./mysqladmin -uroot -ppwd shutdown

3、

./mysqld_safe --user=root

记住:对授权表的任何修改都需要重新reload,即执行第3步。

如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录

use mysql;

insert into db

values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

update db set host = '%' where user = 'xuys';

重复执行上面的第2、3步。

MySQL可以支持ODBC。ODBC的驱动可以通过下载获得。你的连接代码可以如下所示:

Dim cnMySql As New rdoConnection

Driver = rdUseOdbc

t = "DRIVER={MySQL ODBC 3.51 Driver};" &_

"SERVER=yourHostName;PORT=3306;" &_

"DATABASE=dbName;" &_

"UID=yourUserName;PWD=yourPassword;" &_

"OPTION=3;"

同时可以在此检查选项参数值。

'ODBC +OLEDB

'

"Provider=MSDASQL.1;Driver={MySQL};host=localhost;DataBase=test;User ID=monty"

'OLEDB

"Provider=MySqlProv.2.5;data source=test;User

ID=monthy;server=localhost"

Dim adoRecordset As New set

Location = adUseClient

"SELECT * FROM sample2", adoConnection, adOpenKeyset

ing

Set urce = adoRecordset

我用VB6做了一个统计文章的程序,远程连接一个购买的商业MYSQL数据库,其中有name和article两个字段,name 数据类型为VARCHAR(4),article数据类型为 MEDIUMTEXT。现在已经把文本内容(文章)存入到数据库中了,我的问题:如何将article数据导出为 *.txt

保存到本地电脑里(不是服务器空间),请教高手:如何编写这样的代码。先谢了。

我给你一个VB6.0的连接方法吧

先在本机上安装最新的ODBC CONNECTER/mysql

无需设置ODBC,就可以使用.

注意MYSQL的帐户登录是根据主机的,设置好MYSQL的帐户后再做测试.

测试代码:

Dim conn As tion

Dim rs As set

Dim fld As

Dim sql As String

'connect to MySQL server using MySQL ODBC 3.51 Driver

Set conn = New tion

tionString = "DRIVER={MySQL ODBC 3.51 Driver};" _

& "SERVER=192.168.0.1;" _

& " DATABASE=db_name;" _

& "UID=username;PWD=password; OPTION=3"

'create table

e "DROP TABLE IF EXISTS my_ado"

e "CREATE TABLE my_ado(id int not null primary key, name varchar(20),"

_

& "txt text, dt date, tm time, ts timestamp)"

'direct insert

e "INSERT INTO my_ado(id,name,txt) values(1,100,'venu')"

e "INSERT INTO my_ado(id,name,txt) values(2,200,'MySQL')"

e "INSERT INTO my_ado(id,name,txt) values(3,300,'Delete')"

Set rs = New set

Location = adUseServer

'fetch the initial table ..

"SELECT * FROM my_ado", conn

Count

rst

String(50, "-") & "Initial my_ado Result Set " & String(50, "-")

For Each fld In

,

Next

Do Until

For Each fld In

,

Next

xt

Loop

今天对 vb+mysql编程头脑中渐渐形成模型.VB读MYSQL库,修改库

首先,回答一个vb+myql链接远程数据库的问题,这个问题之前我比较迷惑,有经验的会觉得这不值一提,但从我的经历来看,这个问题会困惑初学者. 我们知道,在vb+access中,如果要链接局域网库,可以把链接库地址直接写为ip地址共享目录*.mdb ,要说明的是局域网中mdb所在的目录一定要共享.如果对库进行修改,要完全共享.但这种写法链接不了远程固定ip服务器.但链接远程服务上的mysql数据库,这是可以实现的.写法为

dim conn as New tion

dim rs as New Set

dim connstr as String

ConnStr = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=远程服务器IP地址;" & "DATABASE=data;" & "UID=root;PWD=root;OPTION=3"

如果是本地服务器,只需要将远程服务器地址改为:localhost . UID和PWD换成你MYSQL库访问名称和密码即可

使用vb读MYSQL库.

dim conn as New tion

dim rs as New Set

dim connstr as String

ConnStr = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" & "DATABASE=data;

" _

& "UID=root;PWD=root;OPTION=3" '链接字符串赋值

ConnStr

"select name,pw,userlevel from user where name='" & & "' and

_

pw='" & & "'", conn, adOpenStatic, adLockOptimistic

然后通过("name")即可访问当前记录内容.

使用vb修改MYSQL库

dim conn as New tion

dim rs as New Set

dim connstr as Stringdim conn as New tion

dim rs as New Set

dim connstr as String

ConnStr = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=localhost;" &

"DATABASE=data;" _

& "UID=root;PWD=root;OPTION=3" '链接字符串赋值

"select name,pw,userlevel from user where name='" & LogUserName & "' and

_

pw='" & LogUserPw & "'", conn, adOpenStatic, adLockOptimistic

"update user set pw='" & Trim() & "' where name='" & LogUserName

& "' and_

pw='" & LogUserPw & "'"

有一个问题现在还比较困惑,如果表中只有一条记录.当你使用查询定位到此记录时,BOF与EOF均为真,而此时是不允许访问表中认何值的。这样有一个问题比较难以解决,当库中只一条记录时,如何对其进行取值?如何对其进行修改?

今天晚了,有了答案我会继续整理上来。希望对大家有帮助。

本文来自CSDN博客,转载请标明出处:/jomakzhao/archive/2007/03/23/

MySQL修改密码方法总结

首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的, 所以一般用户无法更改密码,除非请求管理员。

方法一使用PHPmyadmin,这是最简单的了,修改MySQL库的user表, 不过别忘了使用PASSword函数。

方法二使用MySQLadmin,这是前面声明的一个特例。 mysqladmin -u root -p password

mypasswd 输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。把命令里的root改为你的用户名,你就可以改你自己的密码了。 当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin, 那么这种方法就是无效的。 而且mysqladmin无法把密码清空。下面的方法都在mysql提示符下使用,且必须有mysql的root权限:

方法三 MySQL> INSERT INTO (Host,User,Password)

VALUES('%','jeffrey',PASSWORD('biscuit')); mysql> FLUSH PRIVILEGES 确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。 在《mysql中文参考手册》里有这个例子,所以我也就写出来了。注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

方法四 和方法三一样,只是使用了REPLACE语句 MySQL> REPLACE INTO

(Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit')); mysql> FLUSH

PRIVILEGES

方法五 使用SET PASSword语句, MySQL> SET PASSWORD FOR jeffrey@"%" =

PASSWORD('biscuit'); 你也必须使用PASSWORD()函数, 但是不需要使用FLUSH PRIVILEGES。

方法六使用GRANT ... IDENTIFIED BY语句 MySQL> GRANT USAGE ON *.* TO jeffrey@"%"

IDENTIFIED BY 'biscuit'; 这里PASSword()函数是不必要的,也不需要使用FLUSH

PRIVILEGES。注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。

怎样在vc、Delphi、VB等程序中使用MySQL呢(mysql odbc驱动程序的使用) 我们经常会遇到这样问题,怎样在非web程序或ASP程序中使用mysql数据库呢?对于这个问题有两个解决方案:

1.使用MySQL提供的api函数库。

很多有名的MySQL客户端工具就是这样实现的,大名鼎鼎的winmysql工具就是这样的。这在大部分的开发工具中都可以实现。比如vc,bcb,Delphi,VB等,只要能调用第三方的api就能实现。但对程序员的要求很高,而且要熟悉一套mysql的api函数集,这不是对每个人都很轻松的事。而且这种方法不能用于ASP等程序,因为它不支持com对象。

2。第二种是使用myodbc驱动程序。

你可以到下载myodbc驱动程序,然后照着下面的做就可以了

第一种选择是下载完全安装包,这种包很大,但对于我们来说有用的只有这个文件,却要下载这么大的文件,不太合适。当然,如果你很菜的话,我建议你选择这种方式,这样容易些,但不符合cfans的作风,是吧。

第二种是直接下载文件,只有几百k,但不太容易使用,本人经过很久摸索才找到使用它的方法。

首先你将包解开,将 文件放到windowssystem 或 winntsystem32目录下,这取决于你的系统是win9x还是winnt(win2k),你应该知道吧。

然后打开一纯文本编辑器,如editplus,notpad之类,(取决于你的喜好)将下面一段话保存为一文件,扩展名为.reg,知道了吧,这是注册表文件,不要搞错呀

如果你用的是win2k请将第一行换成 Windows Registry Editor Version 5.00

Windows Registry Editor Version 4.00

[HKEY_LOCAL_dbc driver]

"UsageCount"=dword:00000002

"Driver"="C:"

"Setup"="C:"

"SQLLevel"="1"

"FileUsage"="0"

"DriverODBCVer"="02.50"

"ConnectFunctions"="YYY"

"APILevel"="1"

"CpTimeout"="120"

[HKEY_LOCAL_C Drivers]

"myodbc driver"="installed"

保存后,双击刚才的文件,应该叫 吧,然后选择确定,ok,搞定了。然后你打开odbc设置程序,建一新数据源,选择myodbc驱动程序,剩下的就看你自己了。

修改MYSQL密码的几种方式

方法一:

(适用于管理员或者有全局权限的用户重设其它用户的密码)

进入命令行模式

mysql -u root mysql

mysql> UPDATE user SET password=PASSWORD(”new password”) WHERE user=’name’;

mysql> FLUSH PRIVILEGES;

mysql> QUIT

方法二:

(应用同上,只是方法不同)

mysql -u root mysql

mysql> SET PASSWORD FOR name=PASSWORD(’new password’);

mysql> QUIT

(以上两种方法我不常用,如果是管理员,我会用其它如phpmyadmin或者MYSQL-front 等工具来管理用户权限,比较直观又方便)

最后必杀技:

mysqladmin -u root “old password” “new password”

解:以上有name的,请用你的用户名来替代.有new password请输入你想要设置的密码.

如果 MySQL 正在运行,

首先杀之: killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之)

以安全模式启动 MySQL :

/usr/bin/safe_mysqld –skip-grant-tables &

(windows 下 mysql安装所以盘/mysql/bin/safe_mysqld –skip-grant-tables )

就可以不需要密码就进入 MySQL 了。

然后就是

>use mysql

>update user set password=password(”new_pass”) where user=”root”;

>flush privileges;

重新杀 MySQL ,用正常方法启动 MySQL 。

MySQL数据库不能远程访问的解决办法

MySQL数据库不允许从远程访问怎么办?本文提供了三种解决方法:

1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host"

项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;

2、授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WI

TH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY

'mypassword' WITH GRANT OPTION;

我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES

使修改生效,就可以了

另外一种方法:

在安装mysql的机器上运行:

1、d:mysqlbin>mysql -h localhost -u root

//这样应该可以进入MySQL服务器

2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION

//赋予任何主机访问数据的权限

3、mysql>FLUSH PRIVILEGES

//修改生效

4、mysql>EXIT

//退出MySQL服务器

这样就可以在其它任何的主机上以root身份登录啦。

设置mysql连接数的三种方法

作者:Morningdew 日期:2010-5-29 15:50:16

有时候,我们需要对mysql的连接数进行设置或修改,具体是怎么实现的呢?今天就给大家介绍三种修改mysql连接数的方法,在介绍这三种方法之前,先向大家介绍查看mysql进程的一些信息的方法。

通常,MySQL的最大连接数默认是100 。

客户端登录:mysql -uusername -ppassword

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200

显示当前运行的Query:mysql> show processlist

显示当前状态:mysql> show status

退出客户端:mysql> exit

查看当前最大连接数:mysqladmin -uusername -ppassword variables |find "max_con"

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有三个。

方法一:进入MYSQL安装目录 打开MYSQL配置文件 或 查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可

方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200

显示当前运行的Query:mysql> show processlist

显示当前状态:mysql> show status

退出客户端:mysql> exit

查看当前最大连接数:mysqladmin -uusername -ppassword variables

方法三:以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明:

vi /usr/local/mysql/bin/mysqld_safe

找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :

-O max_connections=1500

具体一点就是下面的位置:

用红字特别说明:

then $NOHUP_NICENESS $ledir/$MYSQLD

$defaults --basedir=$MY_BASEDIR_VERSION

--datadir=$DATADIR $USER_OPTION

--pid-file=$pid_file

--skip-external-locking

-O max_connections=1500

>> $err_log 2>&1 else

eval "$NOHUP_NICENESS $ledir/$MYSQLD

$defaults --basedir=$MY_BASEDIR_VERSION

--datadir=$DATADIR $USER_OPTION

--pid-file=$pid_file

--skip-external-locking $args

-O max_connections=1500 >>

$err_log 2>&1"

保存。

# service mysqld restart

# /usr/local/mysql/bin/mysqladmin -uroot -p variables

输入root数据库账号的密码后可看到

max_connections 1500 即新改动已经生效。

还有一种方法,修改原代码:

解开MySQL的原代码,进入里面的sql目录修改找到下面一行:

{"max_connections", OPT_MAX_CONNECTIONS,

"The number of simultaneous clients allowed.", (gptr*) amp;max_connections,

(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,

0},

把它改为:

{"max_connections", OPT_MAX_CONNECTIONS,

"The number of simultaneous clients allowed.", (gptr*) amp;max_connections,

(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,

0},

存盘退出,然后./configure ;make;make install可以获得同样的效果。

这样,大家就可以根据自己的实际需要来修改mysql连接数以满足流量的需求了。

MYSQL添加新字段2008-03-20 11:22ALTER TABLE `SAMECITY_ALBUM` CHANGE `city` `city`

VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

alter table table_name ADD test4 ENUM(´Y´,´N´) NOT NULL Default ´Y´,ADD KEY(test4);

添加一个枚举字段,不为空,默认为Y,并设为索引

alter table supe_aa add ex tinyint(1) not null default ´0´;

//主键549830479

alter table tabelname add new_field_id int(5) unsigned default 0 not null

auto_increment ,add primary key (new_field_id);//增加一个新列549830479

alter table t2 add d timestamp;

alter table infos add ex tinyint not null default ´0´;//删除列549830479

alter table t2 drop column c;//重命名列549830479

alter table t1 change a b integer;

//改变列的类型549830479

alter table t1 change b b bigint not null;

alter table infos change list list tinyint not null default ´0´;

//重命名表549830479

alter table t1 rename t2;加索引549830479

mysql> alter table tablename change depno depno int(5) not null;

mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]);

mysql> alter table tablename add index emp_name (name);加主关键字的索引549830479

mysql> alter table tablename add primary key(id);加唯一限制条件的索引549830479

mysql> alter table tablename add unique emp_name2(cardnumber);删除某个索引549830479

mysql>alter table tablename drop index emp_name;修改表:549830479

增加字段:549830479

mysql> ALTER TABLE table_name ADD field_name field_type;修改原字段名称及类型:549830479

mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;删除字段:549830479

mysql> ALTER TABLE table_name DROP field_name;

相信一定有不少的程序开发人员时常会遇到字符编码的问题,而这个问题也是非常让人头痛的。因为这些都是潜在的错误,要找出这些错误也得要有这方面的开发经验才行。特别是在处理xml文档时 ,该问题的出现就更加的频繁了,有一次用java写服务器端程序,用vc写客户端与之交互。交互的协议都是用xml写的。结果在通讯时老是发现数据接受不正确。纳闷!于是用抓取网络数据包工具抓取数据,后来才发现原来是java上xml的头是这样的,而vc上默认的是GB2312。所以一遇到汉字数据就不正确了。去网上找资料,这方面的文章好象特别少,针对像这样的问题,下面我介绍一下我自己写的一个转换程序。当然,程序很简单。如果有画蛇添足的地方,还望各位高手一笑了之。

如果您对UTF-8、Unicode、GB2312等还是很陌生的话,请查看/books/,我这里就不浪费口舌了。下面介绍一下WinAPI的两个函数:WideCharToMultiByte、MultiByteToWideChar。

函数原型:

int WideCharToMultiByte(

UINT CodePage, // code page

DWORD dwFlags, // performance and mapping flags

LPCWSTR lpWideCharStr, // wide-character string

int cchWideChar, // number of chars in string

LPSTR lpMultiByteStr, // buffer for new string

int cbMultiByte, // size of buffer

LPCSTR lpDefaultChar, // default for unmappable chars

LPBOOL lpUsedDefaultChar // set when default char used

); //将宽字符转换成多个窄字符

int MultiByteToWideChar(

UINT CodePage, // code page

DWORD dwFlags, // character-type options

LPCSTR lpMultiByteStr, // string to map

int cbMultiByte, // number of bytes in string

LPWSTR lpWideCharStr, // wide-character buffer

int cchWideChar // size of buffer

);//将多个窄字符转换成宽字符

需要用到的一些函数:

CString CXmlProcess::HexToBin(CString string)//将16进制数转换成2进制

{

if( string == "0") return "0000";

if( string == "1") return "0001";

if( string == "2") return "0010";

if( string == "3") return "0011";

if( string == "4") return "0100";

if( string == "5") return "0101";

if( string == "6") return "0110";

if( string == "7") return "0111";

if( string == "8") return "1000";

if( string == "9") return "1001";

if( string == "a") return "1010";

if( string == "b") return "1011";

if( string == "c") return "1100";

if( string == "d") return "1101";

if( string == "e") return "1110";

if( string == "f") return "1111";

return "";

}

CString CXmlProcess::BinToHex(CString BinString)//将2进制数转换成16进制

{

if( BinString == "0000") return "0";

if( BinString == "0001") return "1";

if( BinString == "0010") return "2";

if( BinString == "0011") return "3";

if( BinString == "0100") return "4";

if( BinString == "0101") return "5";

if( BinString == "0110") return "6";

if( BinString == "0111") return "7";

if( BinString == "1000") return "8";

if( BinString == "1001") return "9";

if( BinString == "1010") return "a";

if( BinString == "1011") return "b";

if( BinString == "1100") return "c";

if( BinString == "1101") return "d";

if( BinString == "1110") return "e";

if( BinString == "1111") return "f";

return "";

}

int CXmlProcess::BinToInt(CString string)//2进制字符数据转换成10进制整型

{

int len =0;

int tempInt = 0;

int strInt = 0;

for(int i =0 ;i < gth() ;i ++)

{

tempInt = 1;

strInt = (int)(i)-48;

for(int k =0 ;k < 7-i ; k++)

{

tempInt = 2*tempInt;

}

len += tempInt*strInt;

}

return len;

}

UTF-8转换成GB2312先把UTF-8转换成Unicode.然后再把Unicode通过函数WideCharToMultiByte转换成GB2312

WCHAR* CXmlProcess::UTF_8ToUnicode(char *ustart) //把UTF-8转换成Unicode

{

char char_one;

char char_two;

char char_three;

int Hchar;

int Lchar;

char uchar[2];

WCHAR *unicode;

CString string_one;

CString string_two;

CString string_three;

CString combiString;

char_one = *ustart;

char_two = *(ustart+1);

char_three = *(ustart+2);

string_("%x",char_one);

string_("%x",char_two);

string_("%x",char_three);

string_three = string_(2);

string_two = string_(2);

string_one = string_(2);

string_three = HexToBin(string_(1))+HexToBin(string_(1));

string_two = HexToBin(string_(1))+HexToBin(string_(1));

string_one = HexToBin(string_(1))+HexToBin(string_(1));

combiString = string_one +string_two +string_three;

combiString = (20);

(4,2);

(10,2);

Hchar = BinToInt((8));

Lchar = BinToInt((8));

uchar[1] = (char)Hchar;

uchar[0] = (char)Lchar;

unicode = (WCHAR *)uchar;

return unicode;

}

char * CXmlProcess::UnicodeToGB2312(unsigned short uData) //把Unicode 转换成

GB2312

{

char *buffer ;

buffer = new char[sizeof(WCHAR)];

WideCharToMultiByte(CP_ACP,NULL,&uData,1,buffer,sizeof(WCHAR),NULL,NULL);

return buffer;

}

GB2312转换成UTF-8:先把GB2312通过函数MultiByteToWideChar转换成Unicode.然后再把Unicode通过拆开Unicode后拼装成UTF-8。

WCHAR * CXmlProcess::Gb2312ToUnicode(char *gbBuffer) //GB2312 转换成 Unicode

{

WCHAR *uniChar;

uniChar = new WCHAR[1];

::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,uniChar,1);

return uniChar;

}

char * CXmlProcess::UnicodeToUTF_8(WCHAR *UniChar) // Unicode 转换成UTF-8

{

char *buffer;

CString strOne;

CString strTwo;

CString strThree;

CString strFour;

CString strAnd;

buffer = new char[3];

int hInt,lInt;

hInt = (int)((*UniChar)/256);

lInt = (*UniChar)%256;

CString string ;

("%x",hInt);

strTwo = HexToBin((1));

string = (gth() - 1);

strOne = HexToBin((1));

("%x",lInt);

strFour = HexToBin((1));

string = (gth() -1);

strThree = HexToBin((1));

strAnd = strOne +strTwo + strThree + strFour;

(0,"1110");

(8,"10");

(16,"10");

strOne = (8);

strAnd = (16);

strTwo = (8);

strThree = (8);

*buffer = (char)BinToInt(strOne);

buffer[1] = (char)BinToInt(strTwo);

buffer[2] = (char)BinToInt(strThree);

return buffer;

}

例子:将GB2312转换成UTF-8的调用:

char * CXmlProcess::translateCharToUTF_8(char *xmlStream, int len)

{

int newCharLen =0 ;

int oldCharLen = 0;

int revCharLen = len;

char* newCharBuffer;

char* finalCharBuffer;

char *buffer ;

CString string;

buffer = new char[sizeof(WCHAR)];

newCharBuffer = new char[int(1.5*revCharLen)];//设置最大的一个缓冲区

while(oldCharLen < revCharLen)

{

if( *(xmlStream + oldCharLen) >= 0)

{

*(newCharBuffer+newCharLen) = *(xmlStream +oldCharLen);

newCharLen ++;

oldCharLen ++;

}//如果是英文直接复制就可以

else

{

WCHAR *pbuffer = this->Gb2312ToUnicode(xmlStream+oldCharLen);

buffer = this->UnicodeToUTF_8(pbuffer);

*(newCharBuffer+newCharLen) = *buffer;

*(newCharBuffer +newCharLen +1) = *(buffer + 1);

*(newCharBuffer +newCharLen +2) = *(buffer + 2);

newCharLen += 3;

oldCharLen += 2;

}

}

newCharBuffer[newCharLen] = ''0'';

CString string1 ;

("%s",newCharBuffer);

finalCharBuffer = new char[newCharLen+1];

memcpy(finalCharBuffer,newCharBuffer,newCharLen+1);

return finalCharBuffer;

}

例子:将UTF-8转换成GB2312的调用:

char * CXmlProcess::TranslateUTF_8ToGB(char *xmlStream, int len) //len 是xmlStream的长度

{

char * newCharBuffer = new char[len];

int index =0;

int nCBIndex = 0;

while(index < len)

{

if(xmlStream[index] > 0) // 如果是GB2312的字符

{

newCharBuffer[nCBIndex] = xmlStream[index]; //直接复制

index += 1; //源字符串偏移量1

nCBIndex += 1; //目标字符串偏移量1

}

else //如果是UTF-8的字符

{

WCHAR * Wtemp = this->UTF_8ToUnicode(xmlStream + index); //先把UTF-8转成Unicode

char * Ctemp = this->UnicodeToGB2312(*Wtemp);//再把Unicode 转成 GB2312

newCharBuffer[nCBIndex] = * Ctemp; // 复制

newCharBuffer[nCBIndex + 1] = *(Ctemp + 1);

index += 3; //源字符串偏移量3

nCBIndex += 2; //目标字符串偏移量2 因为一个中文UTF-8占3个字节,GB2312占两个字节

}

}

newCharBuffer[nCBIndex] = 0; //结束符

return newCharBuffer;

}

这是在中为连接MySql中编写的一个类库。你可以使用这个类库直接操作MySql数据库。

在使用这个类库之前,你必须安装

ODBC MYSQL 3.51下载地址:/downloads/

Driver 下载地址:/downloads/?FamilyId=6CCD8427-1017-4F33-A062-D165078E32B1&displaylang=en

在这个库中有三个类:

◆ManipStringForMySQL: 此类修改SGBD的字符串

◆MySQL_Requettes: 发送请求

◆MySQL_Utils : 对SGBD数据进行测试

下面是使用操作MySql的一个例子

1. Public Shared Function MyODBCDataset(ByVal ReqSQL As String, _ByVal LaBase As String,

ByVal Server As String, _ByVal Password As String,

ByVal User As String, _ByVal NomDataSet As String) As DataSet

2. 'Connexion à un server MySQL

3. 'avec le Driver ODBC 3.51 avec requette qui renvoie un dataset

4. Dim MyConString As String = _

5. "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & Server _& ";DATABASE=" & LaBase & ";

6. UID=" & User _& ";PASSWORD=" & Password & ";OPTION=3;"

7.

8. Dim MyODBCConnexion As New OdbcConnection(MyConString)

9. Try

10. Dim ds As New DataSet()

11. Dim cmd As OdbcDataAdapter = New

12. OdbcDataAdapter(ReqSQL, MyConString)

13. Dim MyCommand As New OdbcCommand()

14. Dim MyDataReader As OdbcDataReader

15. (ds, NomDataSet)

16. ()

17. Return ds

18. Catch MyOdbcException As OdbcException

19. '

20. (ng)

21. Catch MyException As Exception

22. '

23. (ng)

24. End Try

25. End Function


本文标签: 方法 修改 使用