【问题标题】:MySQL in Java - INSERT and DELETE statements not working properlyJava 中的 MySQL - INSERT 和 DELETE 语句无法正常工作
【发布时间】:2012-07-07 16:56:37
【问题描述】:
  • 有两个表chat_userschat_lines
  • 插入和选择在chat_user 上运行良好
  • chat_user 的更新不起作用
  • 插入chat_lines 也不起作用

chat_user_model.java的源列表

package model;

import Beans.ChatLineBeans;
import Beans.ChatUserBeans;
import java.security.Timestamp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author user
 */
public class chat_user_model extends DBConnection  {

public static void add_User(ChatUserBeans user ) throws ClassNotFoundException  {

        try {

            Connection conn = createConnection();
            PreparedStatement s;
            s = conn.prepareStatement (
               "INSERT INTO chat_users (name, gravatar) VALUES(?,?)");
             s.setString (1,user.getuserName());
             s.setString (2, user.getgravatar());
             int count = s.executeUpdate ();
             s.close ();
              conn.close();
             //System.out.println (count + " rows were inserted");

            } catch (SQLException ex) {
            Logger.getLogger(chat_user_model.class.getName()).log(Level.SEVERE, null, ex);
            }

    }
public static  ChatUserBeans find_user(String name ) {
    ChatUserBeans user=new ChatUserBeans();
        try {
            Connection con = createConnection();
            PreparedStatement stmt = con.prepareStatement("select  * from chat_users where name=? ");
            stmt.setString(1, name);
            ResultSet result= stmt.executeQuery();
            while(result.next())
            {
              user.setuserName(result.getString("name"));
              user.setgravatar(result.getString("gravatar"));
            }
            stmt.close();
            stmt.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(chat_user_model.class.getName()).log(Level.SEVERE, null, ex);
        }
    return user ;

}
public static void add_line(ChatLineBeans line ) throws ClassNotFoundException  {

        try {

            Connection conn = createConnection();
            PreparedStatement s;
            s = conn.prepareStatement (
               "INSERT INTO chat_lins (aurther, gravatar,text) VALUES(?,?,?)");
             s.setString (1,line.getauther());
             s.setString (2, line.getgravatar());
             s.setString (3, line.gettext());
             int count = s.executeUpdate ();
             s.close ();
             conn.close();

             //System.out.println (count + " rows were inserted");

            } catch (SQLException ex) {
            Logger.getLogger(chat_user_model.class.getName()).log(Level.SEVERE, null, ex);
            }


    }

public static void delete_User(String name ) throws ClassNotFoundException  {

        try {
            Connection conn = createConnection();
            PreparedStatement s;
            s = conn.prepareStatement (
               "DLETE FROM chat_users WHERE name=?");
             s.setString (1,name);
             int count = s.executeUpdate ();
             s.close ();
              conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(chat_user_model.class.getName()).log(Level.SEVERE, null, ex);
        }



    }
}

和连接文件是

    package model;


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;

public class DBConnection {
        private static String hostName = "localhost";
        private static String port = "3306";
        private static String dbName ="120623085702";
        private static String userName = "root";
        private static String password="";
        public static Connection createConnection(){
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://" + hostName + ":" + port + "/" + dbName;
                System.out.println(url);
                Connection con = DriverManager.getConnection(url,userName,password);
                return con;

            } catch (SQLException ex) {
                Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
            }

            return null;
        }

    }

关于如何解决此问题的任何建议。

提前致谢。

【问题讨论】:

  • 不工作意味着什么?他们有没有抛出任何错误?请发布抛出的错误堆栈。
  • 没有错误但没有修改数据库:(
  • 您是否尝试调试过count 的值。它实际上通知受影响的行数。 0 表示输入查询参数不受影响的行。
  • 我会仔细检查您的代码和您在 createConnection 中用于连接的 JDBC 字符串,确保您也指定了默认数据库。我还会确保您使用的任何数据库帐户都可以写入相关表。
  • @JamesMcMahon OP 说插入正在为chat_user 表工作。

标签: java mysql model-view-controller


【解决方案1】:

您在查询中拼错了 DELETE。这将是删除语句不起作用的原因。您没有看到错误的原因可能是您的日志记录设置不正确。如果是这种情况,则插入语句可能会出现任何问题,并且您不会知道它是什么(例如缺少列/表,不小心将 null 插入到不可为空的列中)。试着不要捕捉那些 SQLExceptions,然后看看你是否看到任何错误。

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2015-01-01
    • 2019-05-15
    • 2015-09-27
    相关资源
    最近更新 更多