2017-02-22 42 views
-1

Мой метод работает только с StrictMode, когда я удаляю StrictMode, мое приложение после запуска этого метода загружается в бесконечность ... и никогда не останавливается. Я не знаю, почему, кто-нибудь может это объяснить?Отправка данных JDBC, странный случай с StrictMode

public void sending() { 

    Connection co = null; 
    Statement st = null; 

    try { 
     StrictMode.ThreadPolicy po = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(po); 

     Class.forName("com.mysql.jdbc.Driver"); 

     co = DriverManager.getConnection(url2, user2, pass2); 

     st = co.createStatement(); 

     Double bb = latitude; 
     Double bb1 = longitude; 

     String sql2 = "INSERT table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')"; 
     st.executeUpdate(sql2); 

    } catch (SQLException se) { 
     se.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (st != null) { 
       co.close(); 
      } 
     } catch (SQLException se) { 
     } 
     try { 
      if (co != null) { 
       co.close(); 
      } 
     } catch (SQLException se) { 
      se.printStackTrace(); 
     } 
    } 
} 
+1

Поместить свой код в потоке. – greenapps

+0

Вы пытались запустить код в отладчике и пройти через него, чтобы вы могли сузить место, где он терпит неудачу? –

+0

кстати. если ваш SQL работает таким образом, я хочу знать, какую базу данных вы используете. Потому что это не должно. И вы должны использовать PreparedStatement, как сказал YCF_L, это действительно хорошая идея практически во всех ситуациях. –

ответ

1

Ваш есть проблема в вашем запросе должно быть:

"INSERT Into table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')" 

, а не:

"INSERT table (tab1, tab2) VALUES('" + bb + "', '" + bb1 + "')" 

Вы пропустили Into в запросе.


Примечание

Вы можете получить ошибку синтаксиса или Sql инъекций с пути я предлагаю использовать PreparedStatement это более безопасным и более полезным, как это:

PreparedStatement preparedStatement = 
       connection.prepareStatement("INSERT into table (tab1, tab2) VALUES(?, ?)"); 
preparedStatement.setString(1, bb); 
preparedStatement.setString(2, bb1); 
+0

мой запрос работает исправно, я проверил, проблема возникает, когда я удаляю StrictMode из моего кода – forschool

+0

у вас возникла ошибка @forschool? –

+0

нет ошибки, когда «отправка» вызывает приложение перестает отвечать – forschool