MySql Query: Как можно выполнить два запроса одновременно, используя mysql и java? - PullRequest
0 голосов
/ 29 декабря 2010

Как можно выполнить два запроса одновременно, используя mysql и java? Я столкнулся с проблемой с этим логином, который я создал. Логин работает просто отлично. Но когда он работает в сети, если два разных пользователя пытаются войти в один и тот же экземпляр, он не работает. пользователи могут авторизоваться индивидуально. Есть ли конкретный способ, которым два достигают этого?

код выглядит следующим образом

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.security.MessageDigest;
import sun.misc.BASE64Encoder;
//import java.sql.ResultSet;
import java.sql.SQLException;

public class userauthentication {

    public static String getuserauthentication(String x,String y){
String column="123",prio_no="0";
//String encrypted=password.encryptSha(x);
try{
DBFacede d=new DBFacede();
 ResultSet r1 = d.fetch("SELECT a.Password FROM login a WHERE a.user_id='"+y+"'");
            r1.last();
            int rows = r1.getRow();
            r1.beforeFirst();

            for(int i=0;i<rows;i++){

                if(r1.next()){
                                  }

            }
column=r1.getString("Password");
 ResultSet r2 = d.fetch("SELECT a.Priority FROM login a WHERE a.user_id='"+y+"'");
            r2.last();
            int rows1 = r2.getRow();
            r2.beforeFirst();

            for(int i=0;i<rows1;i++){

                if(r2.next()){
                                  }

            }
prio_no=r2.getString("Priority");
System.out.println(column+"**********");
      }

     catch (SQLException s){
        System.out.println("SQL statement is not executed!");
      }
           //System.out.println(column);
if(column.equals(x)){
return prio_no;}
else {
return "0";
}
}

1 Ответ

1 голос
/ 29 декабря 2010

, но когда он работает в сети, если два разных пользователя пытаются войти в один и тот же экземпляр, это не работает

Проблема заключается не в коде, опубликованном до сих пор (однако сам по себе крайне беден).Одна из возможных причин заключается в том, что вы вошли в систему как статическая переменная приложения, которая используется всеми клиентами.Таким образом, каждый раз, когда пользователь входит в систему, любой ранее вошедший в систему пользователь будет переопределен последним вошедшим в систему пользователем.


Что касается вашего кода, в нем слишком много неправильного, что все должнобыть переписан.

  • Это не является самодокументируемым напрямую.
  • Не используется правильный тип для значения.
  • Это излишне вызывает два запроса к одной таблицевместо одного.
  • Неоправданно смещает набор результатов вперед и назад.
  • Он подвержен атакам с использованием SQL-инъекций.
  • Утечка ресурсов базы данных.
  • Он не обрабатывает исключения разумным образом.

Вот пример того, как это должно быть сделано:

public int getPriority(String username, String password) throws SQLException {
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    int priority = 0;

    try {
        connection = database.getConnection();
        statement = connection.prepareStatement("SELECT priority FROM login WHERE username = ? AND password = ?");
        statement.setString(1, username);
        statement.setString(2, password);
        resultSet = statement.executeQuery();
        if (resultSet.next()) {
            priority = resultSet.getInt("priority");
        }
    } finally {
        if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
    }

    return priority;
}

Вот и все.Вот некоторые учебные пособия / статьи, которые я настоятельно рекомендую вам пройти самостоятельно:

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