Hallo Leute,
ich stehe hier vor einem Problem. Eine kurze Zusammenfassung zu dem, was ich eigentlich vorhabe:
Ich schreibe eine Android App und möchte mit dieser Reihen von Tabelle A zu Tabelle B übertragen durch einen INSERT INTO Befehl. An sich also nichts spektakuläres. Tabelle A wird über einen SELECT Befehl ausgelesen und die Werte in eine ArrayList und später dann in Strings gespeichert. Die Methode "suchen" funktioniert einwandfrei beim ersten Mal. Bei zweiten Mal passiert nichts. Ich kriege lediglich die Fehlermeldung:
Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
Mir ist bewusst, dass irgendwo ein null Wert übergeben wird aber ich weiß nicht genau wo, weil mir keine Zeile angezeigt wird in der Meldung. Verbesserungsvorschläge wären sehr hilfreich.
Anbei ist mein Code, der leicht zensiert wurde.
MFG Detlef_Retlef
ich stehe hier vor einem Problem. Eine kurze Zusammenfassung zu dem, was ich eigentlich vorhabe:
Ich schreibe eine Android App und möchte mit dieser Reihen von Tabelle A zu Tabelle B übertragen durch einen INSERT INTO Befehl. An sich also nichts spektakuläres. Tabelle A wird über einen SELECT Befehl ausgelesen und die Werte in eine ArrayList und später dann in Strings gespeichert. Die Methode "suchen" funktioniert einwandfrei beim ersten Mal. Bei zweiten Mal passiert nichts. Ich kriege lediglich die Fehlermeldung:
Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
Mir ist bewusst, dass irgendwo ein null Wert übergeben wird aber ich weiß nicht genau wo, weil mir keine Zeile angezeigt wird in der Meldung. Verbesserungsvorschläge wären sehr hilfreich.
Anbei ist mein Code, der leicht zensiert wurde.
MFG Detlef_Retlef
Java:
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.design.widget.TextInputEditText;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class SQLInsertInto extends AppCompatActivity {
private static String ip = "...";
private static String port = "...";
private static String Klasse = "net.sourceforge.jtds.jdbc.Driver";
private static String database = "...";
private static String username = "...";
private static String password = "...";
private static String url = "jdbc:jtds:sqlserver://"+ip+":"+port+"/"+database;
private Connection connection = null;
private TextInputEditText suchleiste;
private ArrayList<String> A = new ArrayList<>();
private ArrayList<String> B = new ArrayList<>();
private ArrayList<String> C = new ArrayList<>();
private ArrayList<String> D = new ArrayList<>();
private String eingabestring = null;
private String aVar;
private String bVar;
private String cVar;
private String dVar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sql_insert_into);
suchleiste = (TextInputEditText) findViewById(R.id.suchleiste);
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, PackageManager.PERMISSION_GRANTED);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
public void suchen(View view) {
if (connection != null) {
Statement statement;
try {
A.clear();
B.clear();
C.clear();
D.clear();
getString();
statement = connection.createStatement();
ResultSet resultset = statement.executeQuery("SELECT A, B, C, D\n" +
"FROM Tabelle1 WHERE E = '" + eingabestring + "'");
while(resultset.next()) {
for (int i = 1; i <= 1; i++) {
A.add(resultset.getString(1));
B.add(resultset.getString(2));
C.add(resultset.getString(3));
D.add(resultset.getString(4));
}
}
aVar = A.get(0);
bVar = B.get(0);
cVar = C.get(0);
dVar = D.get(0);
} catch (SQLException e) {
e.printStackTrace();
}
try {
getString();
statement = connection.createStatement();
statement.executeUpdate("INSERT INTO Tabelle2\n" +
"(A, B, C, D)" +
"VALUES ('" + aVar + "', '" + bVar + "', '" + cVar + "', '" + dVar + "')");
} catch (SQLException e) {
e.printStackTrace();
}
}
Intent intent = new Intent(getBaseContext(), SQLInsertInto.class);
startActivity(intent); }
}
private void getString() {
eingabestring = suchleiste.getText().toString();
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="SQLInsertInto">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="155dp"
android:layout_marginStart="60dp"
android:onClick="suchen"
android:text="Suchen" />
<android.support.design.widget.TextInputEditText
android:id="@+id/suchleiste"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="75dp"/>
</RelativeLayout>