【问题标题】:Checking for usename in mysql ...If it exist then inserting into other table Otherwise the base table检查 mysql 中的用户名 ...如果存在,则插入另一个表,否则为基表
【发布时间】:2013-05-12 04:02:03
【问题描述】:

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

user_id       int            not null,autoincrement
movie _id     int            not null 
movie_name    varchar        
user_name     varchar
rating        int
genre         varchar

下面是插入数据库--

try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:XXXX/Recommendation1", "root",
                    "XXXXXXXXXXX");
            Statement st = con.createStatement();
            int i = st
                    .executeUpdate("insert into Table1(movie_Id,movie_name,user_name,rating,genre) values('"
                            + movieId
                            + "','"
                            + mname
                            + "','"
                            + pname
                            + "','" + ratingr + "','" + genre + "')");
            out.println("Data is successfully inserted!");
        } catch (Exception e) {
            System.out.print(e);

现在我想要的是,如果已经存在具有该值 (pnmae) 的用户名,我正在输入它不应该进入我的表 1 或更新,但它应该进入另一个表表 2,架构表2如下--

movie _id     int            not null 
movie_name    varchar        
user_name     varchar
genre         varchar

为此使用什么。如何使用 if -else 条件

以下是我在检查用户名是否存在时正在做的事情

Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:XXXX/Recommendation1", "root",
                    "wXXXXX");
            Statement st = con.createStatement();
            //Statement st2 = con.createStatement();
            String SQL = "SELECT * from Table1 WHERE user_name ='" + pname
                    + "' ";
            ResultSet rs = st.executeQuery(SQL);

            --if (rs.) {   //What to put here

                int j = st
                        .executeUpdate("insert into Table2(movie_Id,movie_name,user_name,genre) values('"
                                + movieId
                                + "','"
                                + mname
                                + "','"
                                + pname
                                + "','" + genre + "') ");

            }

            int i = st
                    .executeUpdate("insert into Table1(movie_Id,movie_name,user_name,rating,genre) values('"
                            + movieId
                            + "','"
                            + mname
                            + "','"
                            + pname
                            + "','" + ratingr + "','" + genre + "') ");

            /*  ResultSet rs = st1.executeQuery();
                out.println("name is already there");
                out.println("Data is successfully inserted!"); */

        /*  final String Query = "SELECT t1.user_Id from Table1 t1 JOIN Table2 t2 on t2.movie_Id = t1.movie_id WHERE t2.user_name = 'vishal'";

            PreparedStatement st11 = con.prepareStatement(Query);
            ResultSet rw = st11.executeQuery();
            rw.last();

            int id = rw.getInt("user_Id");

            System.out.print("ID: " + id);*/

谢谢

【问题讨论】:

  • 在 INSERT 之前对 pname 执行 SELECT,如果没有返回行,则仅 INSERT。不是吗?
  • 嘿 Manish 这样做只是喜欢检查用户名是否存在,如果不存在则插入表 1,否则插入表,但我不知道如何
  • 在 IF 条件下尝试 rs.next()。

标签: java mysql database jdbc mysql-workbench


【解决方案1】:

试试这个:-

        boolean isUser=false;
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost:XXXX/Recommendation1", "root",
                "wXXXXX");
        Statement st = con.createStatement();           
        String SQL = "SELECT 1 from Table1 WHERE user_name ='"+ pname
                + "' ";
        ResultSet rs = st.executeQuery(SQL);
        isUser=rs.next();
        Statement st2 = con.createStatement();
        if (isUser) {   //check the user is exist or not

            int j = st2.executeUpdate("insert into Table2(movie_Id,movie_name,user_name,genre) values('"
                            + movieId
                            + "','"
                            + mname
                            + "','"
                            + pname
                            + "','" + genre + "') ");

     }else{

     int i = st2.executeUpdate("insert into Table1(movie_Id,movie_name,user_name,rating,genre) values('"
                        + movieId
                        + "','"
                        + mname
                        + "','"
                        + pname
                        + "','" + ratingr + "','" + genre + "') ");

       }

希望这会对你有所帮助。

【讨论】:

  • 您好 Jdeveloper,谢谢............但没有得到想要的输出。表 1 中都填充了两个条目,表 2 中没有任何内容..... ......................
  • 感谢 JDeveloper....像 Butter 一样工作....但是你能解释一件事......从 Table1 中选择 1 WHERE user_name ='"+ pname + "'"; 像'1'这样的选择是什么,只是user_Id??.............谢谢
  • 1 表示,如果用户 id 和密码匹配,它只会显示 1(没有别的)。无需显示*(表示所有使用更多时间和资源的记录)。
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 2021-11-23
  • 2021-04-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2014-04-14
相关资源
最近更新 更多