中国石凳联盟 登录注册

【PC编程】VB.Net 中 MySQL 应用实例

rockage··1 回复·629 浏览

发表回复
本帖最后由 rockage 于 2016-8-8 13:03 编辑

关于如何建立环境,请参考另一篇文章:http://www.stoneren.net/forum.ph ... 6636&extra=page%3D1
本篇主要讲几个例子,老规矩,不讲原理,直接从实例出发:

1. 连
Dim myConnectionString As String = "server=服务器IP;uid=用户名;pwd=密码;database=数据库名;charset=utf8;Pooling=True" 
Dim cn As New MySql.Data.MySqlClient.MySqlConnection
cn.ConnectionString = myConnectionString
cn.Open()
建立连接相当简单,服务器这些常规的就不说了,charset=utf8这个相当关键,在Windows 10下面,少了这一个选项update进服务器的数据将全是乱码,Pooling=True表示打开连接池,启用这个功能可以提高数据连接效率。另外还要注意在Mysql那边创建数据表的时候一定要使用UTF8编码,否则会大部分汉字是正常显示,而极小部分汉字是乱码这种十分头疼的问题。这里给出一个创建例子:
CREATE TABLE `nuan_customer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`groupid` int(11),
`name` varchar(255) DEFAULT NULL,
`nickname` varchar(255) DEFAULT NULL,
`point` int(11),
PRIMARY KEY (`id`)
)  ENGINE=MyISAM  DEFAULT CHARSET=utf8
主要是DEFAULT CHARSET=utf8这个设置,一定要加上。


2. 读
        Dim cn As New MySql.Data.MySqlClient.MySqlConnection
        Dim da As New MySqlDataAdapter("select * from tablename;", cn)
        Dim ds As New DataSet
            cn.ConnectionString = myConnectionString
            cn.Open()
            da.Fill(ds, "customer") '用fill方法自定义一个表名
            cn.Close()
        End If
这是一个最简单的例子,创建一个DataAdapter,然后用一句select语句读出最后用fill方法填充到本机内存表。
还有一种情况,远程数据库不止一张表,下面的例子讲解如何一次性读取多表:
Dim cn As New MySql.Data.MySqlClient.MySqlConnection
Dim da As New MySqlDataAdapter("select * from 表1;select * from 表2") '两个select之间用;号隔开
Dim ds As New DataSet
cn.ConnectionString = myConnectionString
da.Fill(ds, "all_tables")  '用fill方法自定义表名,第一个表叫all_tables,第二个表叫all_tables1
如果不喜欢这种系统自动生成的表名,还可以完全用自定义的表名做映射,仍然是上面那个例子:
Dim dtm1, dtm2 As Common.DataTableMapping 
dtm1 = da.TableMappings.Add("all_tables", "apple")
dtm2 = da.TableMappings.Add("all_tables1", "orange")
da.Fill(ds, "all_tables") '最后用fill填充,注意映射一定要放在填充操作之前

如果不做映射,那么访问表1是这样的:ds.Tables("all_table") 和 ds.Tables("all_table1")
做了映射后则变成:ds.Tables("apple") 和 ds.Tables("orange")

3. 改




点赞0 收藏
本帖最后由 rockage 于 2016-8-10 18:14 编辑

在phpmyadmin里进行数据修改或新增的时候,有可能会报MySQL的1366错误(#1366 - Incorrect string value),解决方法:
所有字段在新建的时候默认的排序规则都是“latin1_swedish_ci“
将这个选项改为 "utf8_gerneral_ci"
即可解决问题
深入分析:
其实在执行这个操作的时候,phpmyadmin向mySQL服务器执行了以下语句:
ALTER TABLE `ld_class` DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;

相当于修改了整个表的字符集。



点赞0 收藏
发表回复
发表回复