У меня проблема с отправкой данных в базу данных. У меня есть основной поток, открывающий новый поток для соединения, затем выполняется оператор sql и вставляет строку в базу данных в фоновом режиме, в то время как пользовательский интерфейс переключается на другое действие (которое является действием камеры). Проблема заключается в том, что при нормальной работе поток не выполняется, но при выполнении в режиме отладки и прохождения каждой строки ASyncTask это происходит. Единственное время, когда база данных обновляется, - это когда я прохожу через отладку. База данных находится на сервере Microsoft SQL Server.
Я пробовал это несколько раз, и поток последовательно выполнялся только тогда, когда я принудительно выполняю его, проходя в режиме отладки.
В основном потоке
SendToDB sendFalsePositive = new SendToDB();
sendFalsePositive.execute();
Выполняемая AsyncTask
Connection conn;
try {
// com.microsoft.sqlserver.jdbc.sqlserver.SQLServerDriver
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
// jdbc and jtds are the drivers that allow the connection to outside databases
// sq41ddb.na.steelcase.net:3250 is the server and port that are need to connect to the scrapMinder database
String connString = "jdbc:jtds:sqlserver://SQLSERVER;databaseName=DATABASENAME;user=USERNAME;password=PASSWORD";
conn = DriverManager.getConnection(connString);
Log.i("Connection", "Open");
Log.i("SEND TO DB", "Date: " + date + " Time: " +time);
Statement statement = conn.createStatement();
statement.executeUpdate("Insert Into DATABASENAME (Date, Time) \n" +
"values ('" + date + "', '" + time +"' );"); //SQL SELECT STATEMENT TO INSERT INTO DATABASE
statement.setQueryTimeout(0);
} catch (Exception e) {
Log.e("Error SendToDB", e.toString());
}
Есть ли способ заставить этот поток выполнить?