mysql+asp.net开发注意大全:mysql创建数据库的时候,创建新用户,并且付给权限。mysql存储过程的编写,mysql数据库引擎的区别,mysql数据库文件夹备份

目录:

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 存储过程的注意事项

6:MySqlHelper.cs 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存储过程就完成了,是不是很容易呢?看不懂也没关系,接下来,我们详细的讲解。

image

可能会导致报错的地方

image

点击后,会在你的 参数类型,和参数类型值之间,多出一个空格,然后你的asp.net程序调用这个存储过程,会报错,这个小细节会让你吐血到崩溃

image

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 存储过程的注意事项

6:MySqlHelper.cs mysql数据库助手类

7:获取刚插入的数据的id,使用select max(id) from table ? mysql也提供了一个类似于 sqlserver一样的 @@identity 这样的函数 叫做

LAST_INSERT_ID()       asp.net开发mysql注意事项

 

8: 如何创建新的数据库,并创建新的用户,并将此用户和此数据库绑定

image

在添加新用户的时候,主机选择 % ,则表示允许子用户,可以通过远程的客户端软件,例如 SQLyog或者是Navicat for MySQL 远程连接到数据库进行操作,如果选择 localhost,则仅仅允许 服务器上的程序访问数据库 (例如你传个论坛上去,就只能允许你在服务器上的论坛才能访问数据库)

image

image

如果点击这里保存改动的时候,总是报错,则需要看看你当前使用的用户(例如你当前用的是 root账户),有没有全部的权限

当我用root登陆mysql的时候,root是管理员,管理员拥有的是全局权限,我来看看这个root的全局权限有哪些
image
基本上都有了,就只有  EVENT   和  TRIGGER  没有权限(不是很清楚为什么这2个权限被取消了,是做了设置?)


然后,当我们创建子用户  bbs  绑定到 数据库  bbs的时候,也是有一个赋权限,但是我们不能赋全局特权(如果是赋全局特权,相当于是又弄出来了一个root),而是针对指定的数据库赋响应的权限,于是我选择 用户为 bbs,数据库也选择 bbs,开始设置权限,这个时候,问题就来了


由于我给子用户bbs赋值用的是root账户,而root本身也不具备 EVENT 和 TRIGGER这2个权限,所以每次保存就报错。解决方法就是子用户也不要勾选这2个权限。


image

然后就OK了,用刚才建立的新用户,登陆查看一下

image

就能发现你的数据库了 (information_schema 是系统数据库,不用管)

原文地址:https://www.cnblogs.com/joeylee/p/2796246.html