Есть ли причина, по которой поток будет выполняться только тогда, когда я заставлю его в отладке? - PullRequest
0 голосов
/ 02 октября 2019

У меня проблема с отправкой данных в базу данных. У меня есть основной поток, открывающий новый поток для соединения, затем выполняется оператор 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());
        }

Есть ли способ заставить этот поток выполнить?

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