Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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
Java 在MySQL中插入时,检查数据库中是否存在给定的用户名_Java_Mysql_Sql_Database - Fatal编程技术网

Java 在MySQL中插入时,检查数据库中是否存在给定的用户名

Java 在MySQL中插入时,检查数据库中是否存在给定的用户名,java,mysql,sql,database,Java,Mysql,Sql,Database,如何在Java中插入MySQL时检查数据库中是否存在给定的用户名 我在MySQL工作台中有下表-- 下面是对数据库的插入-- 所以这里我只插入电影id、nmovie名称、用户名、分级类型,然后它进入数据库,并向它提供一个用户id(自动增量) 我想要的是,如果我在我的用户名选项中使用相同的名称,那么它不应该提供唯一的自动递增id,而是插入现有用户名的所有详细信息 换句话说,如何检查数据库中是否存在给定的用户名?您要查找的是SQL,如果主键存在,则更新值;如果主键不存在,则插入值 在MySQL中,只

如何在Java中插入MySQL时检查数据库中是否存在给定的用户名

我在MySQL工作台中有下表--

下面是对数据库的插入--

所以这里我只插入电影id、nmovie名称、用户名、分级类型,然后它进入数据库,并向它提供一个用户id(自动增量)

我想要的是,如果我在我的用户名选项中使用相同的名称,那么它不应该提供唯一的自动递增id,而是插入现有用户名的所有详细信息


换句话说,如何检查数据库中是否存在给定的用户名?

您要查找的是SQL,如果主键存在,则更新值;如果主键不存在,则插入值

在MySQL中,只有当insert不存在时,它才具有以下形式

INSERT INTO Table11(...) VALUES(...) ON DUPLICATE KEY UPDATE col11=value1, col2=value2,...
要指定希望值来自values()部分,您需要将其设置为以下内容

INSERT INTO Table11(...) VALUES(...) ON DUPLICATE KEY UPDATE col1=VALUES(col1), col2=VALUES(col2),...
使用表名和列名的完整示例

"insert into Table1(movie_Id,movie_name,user_name,rating,genre) values('"
                            + movieId+ "','"+ mname+ "','"+ pname
                            + "','" + ratingr + "','" + genre + "') "
                            + "ON DUPLICATE KEY UPDATE "
                            + "movie_name=VALUES(movie_name), user_name=VALUES(user_name), "
                            + "rating=VALUES(rating), genre=VALUES(genre) "

注意,最好使用prepare语句来避免SQL注入

String stmt = "insert into Table1(movie_Id,movie_name,user_name,rating,genre) values(?,?,?,?,?) "
                            + "ON DUPLICATE KEY UPDATE "
                            + "movie_name=VALUES(movie_name), user_name=VALUES(user_name), "
                            + "rating=VALUES(rating), genre=VALUES(genre) "

PreparedStatement ps = connection.prepareStatement(stmt);
ps.setObject(1, movie_id);
ps.setObject(2, movie_name);
ps.setObject(3, user_name);
ps.setObject(4, rating);
ps.setObject(5, genre);
ResultSet rs = ps.executeQuery();

谢谢你,where之后我应该写些什么?这是对用户的限制吗?如果你已经有了主键,那么你就不需要where子句了。我只是把它作为习惯,我会去掉它们来匹配你的问题Hey Greey谢谢…….但它给我带来了错误…….我已经完成了以下int I=st.executeUpdate(“在表1中插入重复键更新movie_Id=movieId,movie_name=mname,user_name=pname,rating=ratingr,genre=genre”);抱歉,我只是即兴打字,语法应该是正确的现在语法肯定是正确的,我会把你应该放在答案里的东西放进去
"insert into Table1(movie_Id,movie_name,user_name,rating,genre) values('"
                            + movieId+ "','"+ mname+ "','"+ pname
                            + "','" + ratingr + "','" + genre + "') "
                            + "ON DUPLICATE KEY UPDATE "
                            + "movie_name=VALUES(movie_name), user_name=VALUES(user_name), "
                            + "rating=VALUES(rating), genre=VALUES(genre) "
String stmt = "insert into Table1(movie_Id,movie_name,user_name,rating,genre) values(?,?,?,?,?) "
                            + "ON DUPLICATE KEY UPDATE "
                            + "movie_name=VALUES(movie_name), user_name=VALUES(user_name), "
                            + "rating=VALUES(rating), genre=VALUES(genre) "

PreparedStatement ps = connection.prepareStatement(stmt);
ps.setObject(1, movie_id);
ps.setObject(2, movie_name);
ps.setObject(3, user_name);
ps.setObject(4, rating);
ps.setObject(5, genre);
ResultSet rs = ps.executeQuery();