首页 > 解决方案 > 如何使用 utf8_general(文本类型)从 Java 向 MySQL 发送查询

问题描述

我正在用 Java 编写一个具有登录屏幕的新应用程序。它正在100%工作!

这是检查是否存在与 MySQL 的连接的类。

package Classes;

import java.awt.Font;
import java.sql.*;
import javax.swing.*;

public class DBConnect {
    public Connection con;
    public Statement st;
    public ResultSet rs;

    @SuppressWarnings("empty-statement")
    public void DBConnect() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "Error :- " + ex + " , Please Connect Support Team For More Info !", "DataBase", 0);
            System.exit(0);
        }

        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/flipsoftwere", "root", "");
            st = con.createStatement();
        } catch (SQLException ex2) {
            UIManager.put("OptionPane.messageFont", new Font("Arial", Font.LAYOUT_RIGHT_TO_LEFT, 20));
            JOptionPane.showMessageDialog(null, "فشل الاتصال بقاعدة البيانات" + "\n" + "تئكد من ان الشبكة تعمل بشكل جيد أو اتصل بفريق الدعم", "قاعدة البيانات", 0);
            System.exit(0);
        }
    }

它是这样工作的,没关系:-

这是我按下登录按钮时登录表单的代码:-

try {
    String usernameGET , PasswordGET;
    usernameGET=(String) userN.getSelectedItem();
    PasswordGET=userP.getText();

    String query = "SELECT * FROM users WHERE UserName = '" + usernameGET + "';";

    db.rs = db.st.executeQuery(query);
    db.rs.next();
    String namec= db.rs.getString("UserName");
    String Pass= db.rs.getString("Password");

    if(usernameGET.equals(namec)){
        if(PasswordGET.equals(Pass)){
            UIManager.put("OptionPane.messageFont", new Font("Arial", Font.LAYOUT_RIGHT_TO_LEFT, 20));
            JOptionPane.showMessageDialog(null, "اهلا بك  " + usernameGET + " !","دخول مقبول",1);
            DashBord das=new DashBord();
            LogIn.statas.setText("Yes");
            this.setVisible(false);
            das.NameLogIn.setText(usernameGET);
            das.setVisible(true);
        }
        else {
            UIManager.put("OptionPane.messageFont", new Font("Arial", Font.LAYOUT_RIGHT_TO_LEFT, 20));
            JOptionPane.showMessageDialog(null,"كلمة المرور خطأ","دخول مرفوض", 0);
        }
    }
    else {
        UIManager.put("OptionPane.messageFont", new Font("Arial", Font.LAYOUT_RIGHT_TO_LEFT, 20));
        JOptionPane.showMessageDialog(null,"اسم المستخدم خطأ","دخول مرفوض", 0);
    }
}catch(Exception ex3){
    UIManager.put("OptionPane.messageFont", new Font("Arial", Font.LAYOUT_RIGHT_TO_LEFT, 20));
    JOptionPane.showMessageDialog(rootPane, ex3);
}

如果我选择(Adeeb)它没有问题,就像这样

但是,如果我使用这样的文本类型(“اديب”),它会给我一个像这张图片这样的查询错误!

那么如何发送非英文文本的查询呢?

标签: javamysql

解决方案


推荐阅读