目录:
1:如何创建存储过程,使用存储过程的注意事项
2:数据库的备份和还原 (分别使用 Navicat for Mysql 以及 SQLyog这两款不同的工具,以及为什么有的mysql数据库能直接拷贝复制数据库文件夹就能备份成功,而有的mysql数据库拷贝复制之后,不能使用?)
3:asp.net 搭配 mysql 运行 的时候 @ 和 ? 的问题,Connector Net 最新版本,1.0版本和6.5.4版本的区别,为什么发布的时候没有包含MySql.Data.dll?
4:asp.net 连接 Mysql 代码生成器(下载地址) 用来生成实体 和 存储过程,动软生成器只能生成 mssql 的存储过程,而不能生成mysql的存储过程
5:asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
7:获取刚插入的数据的id,使用select max(id) from table ? mysql也提供了一个类似于 sqlserver一样的 @@identity 这样的函数 叫做
LAST_INSERT_ID() asp.net开发mysql注意事项
8: 如何创建新的数据库,并创建新的用户,并将此用户和此数据库绑定,为什么mysql创建数据库后出现Access denied for user 'root'@'%' to database ‘xxxx’?为什么新创建的用户,远程连接mysql数据库总是报错?
下面是具体内容:
1:如何创建存储过程,使用存储过程的注意事项
存储过程的注意事项,如果asp.net 调用 mysql的存储过程,提示 MySql.Data.MySqlClient.MySqlException: Unhandled type encountered
(1): 开头和结尾必须要有 DELIMITER 和 DELIMITER ; 两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
(2)过程体的开始与结束使用BEGIN与END进行标识。
(3)存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。注意,在参数的类型和参数的数值之间,不能允许有空格,例如 p_name varchar(20) , 那么这个 varchar和(20)之间,不能有空格,虽然有空格在mysql里面使用正常, 但是在asp.net调用这个存储过程是会报错的。
(4) 调用存储过程的时候,参数的顺序必须要和存储过程里面的参数顺序一模一样. 如何调用存储过程呢?用 CALL 关键字,时间用 逗号 而不是 # 号.
CALL `tb_ad_hitrecord_GetCount`('2012-07-04 15:16:25','2012-07-07 09:11:36',1)
同样的,在asp.net的代码中调用存储过程的时候,写参数也一定要按照mysql的存储过程的参数来写,顺序不能像sql那样乱调。
这样,我们的一个MySQL存储过程就完成了,是不是很容易呢?看不懂也没关系,接下来,我们详细的讲解。
可能会导致报错的地方
点击后,会在你的 参数类型,和参数类型值之间,多出一个空格,然后你的asp.net程序调用这个存储过程,会报错,这个小细节会让你吐血到崩溃
2:数据库的备份和还原 (分别使用 Navicat for Mysql 以及 SQLyog这两款不同的工具,以及为什么有的mysql数据库能直接拷贝复制数据库文件夹就能备份成功,而有的mysql数据库拷贝复制之后,不能使用?)
(1):使用 Nacicat 进行备份,
优点:可以方便的备份出 表,存储过程(包括函数和视图),数据.
缺点:当刚开始只有A表的时候,如果你备份(假设备份为 备份1),然后之后你添加了B表,并且此刻你又备份了一次 (此时备份为 备份2)
那么如果你在B表存在的时候,恢复备份1,你猜猜B表还在不在?答案是还在,因为备份1里面只有A表的信息,而没有B表的信息,所以无法对B表进行任何的修改。也就是说,如果你有B表的时候,如果你想恢复到只有A表的状态,用 Nacicat 是无法进行还原的.
如果你在B表存在的时候,恢复备份2,则A表和B表都会存在,因为备份2准确记录下了 A表和 B表的表结构和数据。
(2):使用 SQLyog 进行备份
(3):为什么有的mysql数据库能直接拷贝复制数据库文件夹就能备份成功,而有的mysql数据库拷贝复制之后,不能使用?
3:asp.net 搭配 mysql 运行 的时候 @ 和 ? 的问题,Connector Net 最新版本,1.0版本和6.5.4版本的区别,为什么发布的时候没有包含MySql.Data.dll?
4:asp.net 连接 Mysql 代码生成器(下载地址) 用来生成实体
5:asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
7:获取刚插入的数据的id,使用select max(id) from table ? mysql也提供了一个类似于 sqlserver一样的 @@identity 这样的函数 叫做
LAST_INSERT_ID() asp.net开发mysql注意事项
8: 如何创建新的数据库,并创建新的用户,并将此用户和此数据库绑定
在添加新用户的时候,主机选择 % ,则表示允许子用户,可以通过远程的客户端软件,例如 SQLyog或者是Navicat for MySQL 远程连接到数据库进行操作,如果选择 localhost,则仅仅允许 服务器上的程序访问数据库 (例如你传个论坛上去,就只能允许你在服务器上的论坛才能访问数据库)
如果点击这里保存改动的时候,总是报错,则需要看看你当前使用的用户(例如你当前用的是 root账户),有没有全部的权限
当我用root登陆mysql的时候,root是管理员,管理员拥有的是全局权限,我来看看这个root的全局权限有哪些
基本上都有了,就只有 EVENT 和 TRIGGER 没有权限(不是很清楚为什么这2个权限被取消了,是做了设置?)
然后,当我们创建子用户 bbs 绑定到 数据库 bbs的时候,也是有一个赋权限,但是我们不能赋全局特权(如果是赋全局特权,相当于是又弄出来了一个root),而是针对指定的数据库赋响应的权限,于是我选择 用户为 bbs,数据库也选择 bbs,开始设置权限,这个时候,问题就来了
由于我给子用户bbs赋值用的是root账户,而root本身也不具备 EVENT 和 TRIGGER这2个权限,所以每次保存就报错。解决方法就是子用户也不要勾选这2个权限。
然后就OK了,用刚才建立的新用户,登陆查看一下
就能发现你的数据库了 (information_schema 是系统数据库,不用管)