Получение нового вставленного идентификатора в виде пустой строки, когда я добавляю SET NAMES в свой оператор вставки - PullRequest
1 голос
/ 29 мая 2019

У меня есть следующая программа, которая вставляет эмодзи и любой текст в мою базу данных MySql AWS.Мне не удалось добавить Emojis в мою базу данных MySql, но затем я исправил эту проблему, изменив параметры сортировки и добавив этот запрос -> SET NAMES utf8mb4; до моего предыдущего запроса на вставку, но теперь я не могу получить последний вставленный идентификатор из него.что я должен сделать, чтобы вставить Emoji, а также получить последний вставленный идентификатор от него.

Вот мой код.

public static JSONObject emoji(String comment) {
        JSONObject json = new JSONObject();
        Connection con = null;
        PreparedStatement stmt = null;
        String newInsertId = "";
        try {
            BasicDataSource bds = DBConnection.getInstance().getBds();
            con = bds.getConnection();
            String query = "SET NAMES utf8mb4; insert into emojis set message = '" + comment + "';";
            stmt = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
            if (stmt.executeUpdate() > 0) {
                json.put("success", 1);
            }
            ResultSet rs = stmt.getGeneratedKeys();
            if (rs.next()) {
                newInsertId = rs.getString(1); //giving empty values cause of that SET NAMES utf8mb4; query
            }
            System.out.println(newInsertId); //empty
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        try {
            DbUtils.close(con);
            DbUtils.close(stmt);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
        return json;
    }

1 Ответ

0 голосов
/ 29 мая 2019
static int create() throws SQLException { 
    Connection conn = null; 
    PreparedStatement ps = null; 
    ResultSet rs = null; 
    try { 
        // 2.建立连接 
        conn = JdbcUtils.getConnection(); 
        // conn = JdbcUtilsSing.getInstance().getConnection(); 
        // 3.创建语句 
        String sql = "insert into user(name,birthday, money) values ('name2 gk', '1987-01-01', 400) "; 
        ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//参数2最好写上,虽然Mysql不写也能获取但是不代表别的数据库可以做到 
        ps.executeUpdate();

        rs = ps.getGeneratedKeys(); 
        int id = 0; 
        if (rs.next()) 
            id = rs.getInt(1); 
        return id; 
    } finally { 
        JdbcUtils.free(rs, ps, conn); 
    } 
}

----------------------------------------------- -------

Focus on this 'Statement.RETURN_GENERATED_KEYS'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...