Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL和Java-插入表时引发异常_Java_Mysql_Sql_Database - Fatal编程技术网

MySQL和Java-插入表时引发异常

MySQL和Java-插入表时引发异常,java,mysql,sql,database,Java,Mysql,Sql,Database,我是MySQL的新用户,试图编写通过Java操作数据库的程序 将名为users的表命名为|用户名|电子邮件|角色|,其中用户名为主键,其余属性为非空 假设我做了插入到用户中,因为用户名上有主键约束MySQL应该抛出错误。如何抛出这个错误,如何在JAVA中捕获它?我是否需要编写用于抛出错误的存储过程,或者INSERT INTO语句也具有此功能?如果违反了主键,将抛出一个SQLException,并显示一条包含违反的约束名称的消息。您的异常处理可以如下所示: try { //do the i

我是MySQL的新用户,试图编写通过Java操作数据库的程序

将名为
users
的表命名为
|用户名|电子邮件|角色|
,其中
用户名
主键
,其余属性为
非空


假设我做了
插入到用户中
,因为
用户名上有主键约束
MySQL应该抛出错误。如何抛出这个错误,如何在JAVA中捕获它?我是否需要编写用于抛出错误的存储过程,或者
INSERT INTO
语句也具有此功能?

如果违反了主键,将抛出一个
SQLException
,并显示一条包含违反的约束名称的消息。您的异常处理可以如下所示:

try {
    //do the insert
} catch (SQLException e) {
    if(e.getMessage().contains("MY_CONSTRAINT_NAME")) {
        //duplicate key
    } else {
        //some other error
    }
}
另一种方法是检查
SQLException.getSQLState()
SQLException.getErrorCode()


我建议您使用它来处理并通常减少您需要编写的JDBC代码量。

您为什么不先尝试遵循有关此主题的众多教程之一,并在遇到无法解决的特定问题时提出问题?作为提示,我将使用
PreparedStatement
而不是
Statement
。缺点:它的异常处理非常糟糕。第一个成功的异常处理是。在这两者之间你会找到答案的。最后,MySQL将在适当的时候抛出;你不必做任何特别的事。