Der Wert gibt immer 0 zurück, wobei die Anzahl der eingefügten Zeilen zurückgegeben werden soll

John Joe

Ich habe zwei Tische, einer ist Informationund der andere istWorkForce

Information

Geben Sie hier die Bildbeschreibung ein

Belegschaft

Geben Sie hier die Bildbeschreibung ein

Das twf columnin WorkForce wird verwendet, um die idof- Information abzurufen , die eine Rückgabe als 1 voraussetzt , aber den Wert 0 zurückgibt . Wenn die idin Information 5 ist, twfsollte auch 5 sein.

Zuerst verwende ich die a, um die Anzahl der ausgewählten Zeilen darzustellen und füge dann den Parameter von ain hinzu addWorkForce. Die zeigen toastimmer 0 an.

  a=addInformation(name,weather,date2,status,first1[1],last1[1]);
  Toast.makeText(getApplicationContext(),a+"",Toast.LENGTH_LONG).show();
  addWorkForce(Sub, NoP, NoH,a);

Funktion addInformation

  public long addInformation( final String name, final String weather, final String date2, final String status, final String timeIn, final String timeOut)
    {
        class AddInfo extends AsyncTask<String, Void, String> {
            ProgressDialog loading;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait",null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
            }

            @Override
            protected String doInBackground(String... params) {

                HashMap<String, String> data = new HashMap<String,String>();
                data.put(Config.KEY_USER_NAME,name);
                data.put(Config.KEY_WEATHER,weather);
                data.put(Config.KEY_DATE,date2);
                data.put(Config.KEY_STATUS,status);
                data.put(Config.KEY_TIMEIN,timeIn);
                data.put(Config.KEY_TIMEOUT,timeOut);
                RequestHandler rh=new RequestHandler();
                String result = rh.sendPostRequest(Config.ADD_INFORMATION,data);
                return  result;
            }
        }

         AddInfo ru = new AddInfo();
         ru.execute(name,weather,date2,status,timeIn,timeOut);

        return 0;

    }

Kann mir jemand helfen, das Problem herauszufinden?

addInformation.php

<?php 

    if($_SERVER['REQUEST_METHOD']=='POST'){

        //Getting values
        $name = $_POST['name'];
        $weather = $_POST['weather'];
        $date = $_POST['date'];
                $status = $_POST['status'];
                $timeIn = $_POST['timeIn'];
                $timeOut = $_POST['timeOut'];

        //Creating an sql query
        $sql = "INSERT INTO information(name, weather, date, status, time_in, time_out) VALUES ('$name','$weather','$date', '$status', '$timeIn', '$timeOut')";

        //Importing our db connection script
        require_once('dbConnect.php');

        //Executing query to database
        if(mysqli_query($con,$sql)){
            echo 'Information Added Successfully';
        }else{
            echo 'Could Not Add Information';
        }

        //Closing the database 
        mysqli_close($con);
    }
?>

So habe ich den Code verwendet, um die Zeile in SQLite einzufügen, und es funktioniert

 a = ts.insertTimeSheet(name, weather, date2, status, first1[1], last1[1]);

Arbeitszeittabelle

 public long insertTimeSheet(String name, String weather, String date, String status, String TimeIn, String TimeOut) {
        database = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(MyDatabaseHelper.Name, name);
        values.put(MyDatabaseHelper.Weather, weather);
        values.put(MyDatabaseHelper.Date, date);
        values.put(MyDatabaseHelper.Status, status);
        values.put(MyDatabaseHelper.TimeIn_Info, TimeIn);
        values.put(MyDatabaseHelper.TimeOut_Info, TimeOut);
        return database.insert(MyDatabaseHelper.TABLE_INFO, null, values); // if the id in Information is 5, twf display 5 too
Geeky Singh

Gemäß Ihrem Code, um Informationen hinzuzufügen:

a=addInformation(name,weather,date2,status,first1[1],last1[1]);

Hier rufen Sie addInformationden Hauptthread auf und halten den Rückgabewert für die Variable a. Aber das Problem ist, Ihre tatsächliche Implementierung Hinzufügen von Informationen in getan doInBackgroundvon AsyncTaskdem tatsächlich macht den Job auf einem Worker - Thread (asynchroner Aufruf) und so werden Sie immer den Standardwert erhalten für a = 0 (als lang).

Was Sie tun müssen, ist, Ihren Code auf die folgende onPostExecuteFunktion zu verschieben AsyncTask:

public void addInformation( final String name, final String weather, final String date2, final String status, final String timeIn, final String timeOut)
    {
        class AddInfo extends AsyncTask<String, Void, String> {
            ProgressDialog loading;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(WorkDetailsTable.this, "Please Wait",null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
                addWorkForce(Sub, NoP, NoH,a);
            }

            @Override
            protected String doInBackground(String... params) {

                HashMap<String, String> data = new HashMap<String,String>();
                data.put(Config.KEY_USER_NAME,name);
                data.put(Config.KEY_WEATHER,weather);
                data.put(Config.KEY_DATE,date2);
                data.put(Config.KEY_STATUS,status);
                data.put(Config.KEY_TIMEIN,timeIn);
                data.put(Config.KEY_TIMEOUT,timeOut);
                RequestHandler rh=new RequestHandler();
                String result = rh.sendPostRequest(Config.ADD_INFORMATION,data);
                return  result;
            }
        }

         AddInfo ru = new AddInfo();
         ru.execute(name,weather,date2,status,timeIn,timeOut);

    }

Es gibt einen anderen Ansatz, um Rückrufe zu verwenden. Implementieren Sie eine Schnittstelle, und nach Abschluss Ihrer AsyncTask können Sie einen Rückruf senden, um einen anderen Job auszuführen.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Gibt die Anzahl der Zeilen in postgresql zurück

MYSQL gibt die Anzahl der Zeilen einer Funktion zurück

Python: Warum gibt der Wert immer 0 zurück?

Wie kann die Anzahl der aktualisierten Zeilen in der SQL-Abfrage zurückgegeben werden?

Die laravel-Abfrage gibt nicht die gesamte Anzahl der Zeilen der Beziehung zurück

Mysql - Wie kann ich die Anzahl der Zeilen subtrahieren, die von 2 Abfragen zurückgegeben werden?

Begrenzen Sie die Anzahl der Zeilen, die von einer Abfrage in Oracle und Postgres zurückgegeben werden

SQL fügt mehrere Zeilen ein, abhängig von der Anzahl der Zeilen, die von der Unterabfrage zurückgegeben werden

Der doppelte Wert gibt 0 zurück

executebatch () der vorbereiteten Anweisung gibt nicht die Anzahl der hinzugefügten Stapel zurück

MySQL (python 3.6) - SELECT * FROM table - gibt die Anzahl der Zeilen anstelle der Tabelle zurück

Gibt die Anzahl der Zeilen in einem Abschnitt in der Tabellenansicht von einem Array in einem Array zurück

Die Abfrage gibt keine korrekten Elemente in der Liste zurück. Sollten Artikel mit der größten Anzahl zurückgegeben werden und das Listenlimit sollte 15 Artikel betragen

Die Abfrage gibt immer 0 Zeilen zurück

Moodle kein Wert in der Tabelle, aber die Anzahl der Abfrageergebnisse gibt 1 zurück

Warum gibt TFramedScrollBox nur in FMX immer die Anzahl der Steuerelemente als 2 zurück?

Die Postgresql-Funktion gibt die Anzahl der betroffenen Zeilen zurück

Gibt x Anzahl der Zeilen über VLOOKUP () zurück.

Python-Code gibt immer None boolean zurück, wenn False zurückgegeben werden soll

Warum gibt pandas.DataFrame.sum (Achse = 0) die Summe der Werte in jeder Spalte zurück, wobei Achse = 0 Zeilen darstellt?

Wie beschränke ich die Anzahl der Zeilen, die von einer Oracle-Abfrage nach der Bestellung zurückgegeben werden?

Wie gibt man die Anzahl der Zeilen für das ap-Element zurück?

SQL Server 2008: Executenonquery gibt die Anzahl der betroffenen Zeilen nicht zurück

Gibt die Anzahl der Zeilen vom dplyr-Filter zurück

Exaktes Abrufen gibt mehr als die angeforderte Anzahl von Zeilen in der Prozedur zurück

DataReader gibt keine Daten zurück, sondern die Anzahl der Zeilen

Wert der NSLayoutConstraint-Konstante gibt immer 0 Swift 3 . zurück

Gibt die Anzahl der Auftritte in der Liste zurück

Die Kivy-Position der Kinder eines GridLayout gibt immer (0,0) zurück.