Mysql存储过程(四)——异常处理
有时候,不希望存储过程抛出错误中止执行,而是希望返回一个错误码。
Mysql
支持异常处理,通过定义
CONTINUE/EXIT
异常处理的
HANDLER
来捕获
SQLWARNING/NOT FOUND/SQLEXCEPTION
(警告
/
无数据
/
其他异常)。其中,
FOR
后面可以改为
SQLWARNING,
NOT FOUND, SQLEXCEPTION
来指示所有异常都处理,相当于
oracle
中的
others
。例如,当不进行异常处理时,以下代码将直接抛出一个
ERROR 1062 (23000)
错误:
Sql
code 4-1:
CREATE PROCEDURE test_proc_ins1(
IN i_id INT,
IN i_name VARCHAR(100)
)
BEGIN
INSERT INTO testproc VALUES (i_id,i_name);
INSERT INTO testproc VALUES (i_id,i_name);
END;
经过异常处理后,可以避免抛出错误,而是定义一个返回参数
o_ret
赋予特殊值来表示失败,这样,在
java
代码中,可以通过获取返回值而不是捕获异常的方式来处理业务逻辑。例如将返回值设置为
-1:
Sql
code 4-2:
CREATE PROCEDURE test_proc_ins1(
IN i_id INT,
IN i_name VARCHAR(100),
OUT o_ret INT)
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '23000' set o_ret = -1;
-- 也可以这样使用:
-- DECLARE EXIT HANDLER FOR SQLWARNING,NOT FOUND,SQLEXCEPTION set o_ret=-1;
INSERT INTO testproc VALUES (i_id,i_name);
INSERT INTO testproc VALUES (i_id,i_name);
set o_ret = 1;
END;
相关文档:
package com.lovo.cq.shopping10_1.common;
import java.sql.*;
public class DbUtil {
private PreparedStatement pstmt = null;
private Connection con = null;
public DbUtil() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://l ......
今天给新来的员工连接数据库,修改了一下mysql root用户的密码,我下载的是打包的redMine,默认密码是空,修改密码之后重启redmine,phpAdmin 链接不上mysql数据库了,我也修改了phpadmin文件夹下的config.inc.php的密码,还是不行,提示#1130 - Host 'localhost' is not allowed to connect to this MySQL server错误,明 ......
/* CSS Document */
body {
font: normal 11px auto "Trebuchet MS", verdana, arial, helvetica, sans-serif;
color: #4f6b72;
background: #e6eae9;
}
a {
color: #c75f3e;
}
table{
padding: 0;
margin: 0;
border-left: 1px solid #c1dad7;
}
caption { ......
MySQL优化
同时在线访问量继续增大,对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机,或者时不时的服务器卡一下,这个问题曾经困扰了我半个多月。MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。
安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql ......
编译前需要安装的库:
g++
libmysqlclient15-dev
libglade2-dev
libglib2.0-dev
libgtkmm-2.4-dev
libpcre3-dev
libxml2-dev
然后执行
cd mysql-gui-common
./configure
make
sudo make install
cd ../mysql-administrator
./configure
make
sudo make install
安装MySQL Administrator
安装完成后mysql- ......