Lỗi INSERT dữ liệu vào SQL bằng java

Chiptk6761

New Member
24/4/20
9
1
3
japan
Mọi người ơi cho em hỏi đoại code dưới đây phần insert into dữ liệu vào bảng của em sai ở đâu mà cứ báo lỗi
Incorrect string value: '\xE5\xB1\xB1\xE7\x94\xB0' for column `youngmayer`.`jdbc_user_table`.`name` at row 1
rồi nhảy vào ngoại lệ ạ. Em xin cảm ơn.
Java:
package ddl_dml;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class mondai6_1 {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        Connection conn=null;
        Statement stmt=null;
        String sqlstr= null;
        ResultSet rset=null;
        try {
            Class.forName("org.mariadb.jdbc.Driver");
            conn=DriverManager.getConnection("jdbc:mariadb://localhost/youngmayer","root","");
            conn.setAutoCommit(false);
            stmt=conn.createStatement();
            sqlstr= "CREATE TABLE jdbc_user_table(id INT PRIMARY KEY, name VARCHAR(30) NOT NULL , lag VARCHAR(30) NOT NULL)";
            stmt.executeUpdate(sqlstr);
            System.out.println("CREATE 文を実行しました。");
            sqlstr="INSERT INTO jdbc_user_table VALUES (1, '山田', '日本語')";
            stmt.executeUpdate(sqlstr);
            System.out.println("INSERT 文を実行しました。");
            sqlstr="INSERT INTO jdbc_user_table VALUES (2, '金', '韓国語')";
            stmt.executeUpdate(sqlstr);
            sqlstr="INSERT INTO jdbc_user_table VALUES (3, 'ルイス', 'インドネシア語')";
            stmt.executeUpdate(sqlstr);
            sqlstr="UPDATE jdbc_user_table SET lag='英語' WHERE id=3";
            stmt.executeUpdate(sqlstr);
            rset=stmt.executeQuery("SELECT * FROM jdbc_user_table");
            while(rset.next()) {
                System.out.println(rset.getInt("id")+"  "+rset.getString("name")+"  "+rset.getString("lag"));
            }
            conn.commit();
        } catch (ClassNotFoundException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
            try {
                // 接続されていた場合、ロールバック
                if (conn != null) {
                    conn.rollback();
                    System.out.println("ロールバックしました...");
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }

        }finally {
            if(stmt!=null) {
                try {
                    stmt.close();
                }
                catch(SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                }
                catch(SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (rset != null) {
                try {
                    // 結果セットをクローズ
                    rset.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }




    }

}
 
Last edited by a moderator:

Joe

Thành viên VIP
21/1/13
2,963
1,307
113
@Chiptk6761

Please read this Thong Bao (Click HERE) so that we could easily read your posting codes.

insert into dữ liệu vào bảng của em sai ở đâu mà cứ báo lỗi
Incorrect string value: '\xE5\xB1\xB1\xE7\x94\xB0'
Boy, you are working with Japanese (or Chinese). Meaning that you should be aware about the Character set you are using. SQL and all other databases need to know what "language" you are using otherwise it assumes that your String is ASCII and throws error if it isn't. To circumvent the problem you have to read the doc of your using DB. For MySQL, for example, you have to "inform" the server that your string is UTF8 with the letter N which stands for NVarchar. Example:
Java:
sqlstr="INSERT INTO jdbc_user_table VALUES (1,N'山田', N'日本語')"; // <<--put N before Yamada " 山田" and Japanese "日本語"
 
Sửa lần cuối:

quydtkt

Administrator
1/11/19
385
36
28
27
Để lưu được các kí tự unicode thì database của bạn phải được setting encoding utf8 và data type của cột trong bảng phải là nvarchar