ARRAY in eine lokale H2 Datenbank

hi
Kann mir jemand auf die Srünge helfen wie ich ein ARRAY in eine lokale H2 Datenbank bekommen. Ich hab schon 2 Tage im Netz gesucht keinen Erfolg gehabt. Auslesen geht wenn ich die Datenbank mit der Hand fülle.

Datenbaankstruktur :String,String,Integer,Array,Bolean

Auslesen mache ich mit

double Position[] = {2.1,3.4,2.7,5.8,12.5,34.7,12.3,23.6,3.5,6.8,0.0,0.0};
ResultSet metaRS = md.getTables(null, null, "%", types);
Statement stmt = conn.createStatement();
.......
ResultSet rs = stmt.executeQuery("SELECT * FROM " + tab);
            	i=0;
            	while (rs.next()) {
            		i=i+1;
            		String Anbietere = rs.getString(1);
            		String Datentype = rs.getString(2);
            		Integer Anzahle = rs.getInt(3);
            		Array Positione = rs.getArray(4);
            		Boolean Teste = rs.getBoolean(5);
            	System.out.println(Anbietere+" "+Datentype+" "+Anzahle+" "+Positione+" "+Teste+" Durchlauf "+i);


 Einlesen habe ich mit 

PreparedStatement prep = conn.prepareStatement("INSERT INTO "+tab+" (ANBIETER, DATEITYP,ANZAHL,Zahl ,TEST ) VALUES (?,?,?,?,?)");
            	prep.setString(1,Anbieter);
            	prep.setString(2,Datentyp);
            	prep.setInt(3,Anzahl);
            	prep.setArray(4, Position); // Fehlermeldung : Die Methode setArray(int, Array) im Typ PreparedStatement ist für die Argumente nicht anwendbar (int, double[]) 
            	prep.setBoolean(5,Test);
            	
            	 prep.addBatch();

beziehungsweise 


                String insertQ = "INSERT INTO " + tab;
            	String eingabe= " VALUES"+Anbieter+","+Datentyp+","+Anzahl+","Position+","+Test; 
            	insertQ=insertQ+eingabe;
        	stmt.executeUpdate(insertQ);

Fehlermeldung Syntaxfehler bei Token „Position“. Token muss gelöscht werden.

versucht.

:confused:
Danke

bei Position ist ja auch ein Syntax-Fehler, wie hier im Forum mit Java-Tags (statt EVIL-Tags?!.. spätet edit: oh, nach meiner Korrektur hattest du auch korrigiert und gar keine Tags mehr, nun 16:40 wieder Java-Tags) zu sehen ist,
nicht zu erkennen was da falsch ist?

bei diesem zweiten Insert fehlen auch Klammern bei Values?
und an Leerzeichen hat man sich auch schon oft zu Tode/ äh zu Fehlern gespart

das Array als toString() einzufügen wird eh nicht gut enden, schaue dir an was da an SQL herauskommt,
versuche es erstmal an einer Datenbank-Konsole einzutippen,

→ was du nicht tippen kannst, kannst du so auch nicht zusammenbauen als String,
dann muss es schon PreparedStatement oder gar nix sein

also ‚sql array java‘ liefert sofort

das zeigt schonmal dass Connection.createArrayOf() zu benutzen ist

wie hast du denn die zugehörige DB-Tabelle erstellt, welchen Datentyp für die Spalte ‚Zahl‘?
ich bin skeptisch dass das so alles funktionieren kann, sieht man so gut wie nie…, aber warum nicht, anderseits

günstig wäre übrigens fürs Forum, das Problem noch deutlich zu vereinfachen, 1-2 Spalten in einer Testtabelle sollten reichen,
fester Test-Tabellenname statt tab-Variable,
INSERT-Befehl weitgehend mit konkreten Test-Inhalten statt Variablen usw. ,

aber gut, dein konkreter Syntax-Fehler ist ja mit dem konkreten Code Anbieter, Datentyp usw. …

Vor einiger Zeit hatten wir schonmal einen Thread, wo versucht wurde ein Array in eine H2 zu packen. H2 hat ja einen Datentyp array, mit dem sowas ja möglich sein sollte. Allerdings schafften wir es damals nicht, das Array auch wirklich zu speichern - mysteriöse Fehler. Mein Tipp: das Array als Blob speichern.

Hi Erst mal danke fürs Antworten und Entschuldigung für meine Unfähigkeit fg. Ich kenn die Einfügemöglichkeiten hier noch nicht. Mit Rot wollte ich Euch nicht erschlagen. Bisher bin ich davon ausgegangen das die Befehle für SQL Server und eingebettete H2 Datenbank unterschiedlich sind. Mit mysql Datenbanken habe ich ja in PHP schon gearbeitet. Ich werde mir die Seite zu Gemüte führen leider ist das immer ein Akt mit meinen miserablen Englisch. Aber Java ist halt kein PHP lach.
OK nun zum Anliegen Das ARRAY ist Gleikommerzahl also Double, Hatte ich in der ersten Zeile gepostet. " double Position = {2.1,3.4,2.7,5.8,12.5,34.7,12.3,23.6,3.5,6.8,0.0,0.0};" Bei der Erstellung der Tabelle wird das ARRAY angelegt. Es ist sogar unabhängig von der Anzahl der Elemente. Eigentlich sehr schön, da ich noch nicht genau weiß wie viel Elemente ich brauch. spart viel Arbeit bei der Satzerstellung. Ich habe auch ein „Anzahl Typ Integer“ der anzeigt wie viel Elemente das ARRAY hat.
Die Klammer bei Vallues hab ich auch probiert also geht mit Ihr auch nicht. Ist verschwunden durch das Ändern sry. Aber ich denke mit VALUES wird es nicht gehen, da ich dann alle Werte in String umwandeln muß. Zu mindestens wurden das einige schleifen bedeuten aber ich werd das mal versuchen. Vielleicht kann ich auch mit einem ARRAY Typ String arbeiten. ES ist halt umständlich weil ich Gleikommazahlen Brauch. Aber wenn es nicht anders geht versuichen.
Zu deiner Bemerkung wegen Variablen geb ich dir zwar recht aber genau das ist das Problem Wenn ich die Zahlen als Satz einfüge ist es eben kein Array mehr und dann geht das natürlich . Das sind dann alles einzelne Elemente. Gut und das TAB der Tabellenname ist war trivial. Aber ich merk ja selber, was für den einen normal ist, muß nicht für den anderen normal sein. Ich werde mich bessern.
Zu deiner Frage betreffs Datenbankstruktur habe ich oben gepostet:

Datenbaankstruktur :String,String,Integer,Array,Bolean
Also Anbieter und Datentyp sind String, Zahl ist Integer, Array ist Double, und test ist Bolean.
Die Datenbankerstellung geht habe ich mit

                String createQ = "CREATE TABLE IF NOT EXISTS "
                + tab
                + "(ANBIETER VARCHAR PRIMARY KEY, DATEITYP VARCHAR,ANZAHL INTEGER,Zahl Array,TEST BOOLEAN)";
        	    stmt.executeUpdate(createQ);

gemacht.

Anders aber wie? Ich brauch im Prinzip eine Anzahl Zahlenpare die ich nutzen will um Bildschirmbereiche zu definieren. Ich denke ich komme erst mal mit 6 Bereichen aus aber sicher bin ich mir nicht. Ich kenn das Theater von „Office Access“ mit dem hab ich auch mal einiges gemacht wenn die Datenbankstruktur nachträglich geändert werden muß. Das wollte ich einfach umgehen. Ich bin für jeden Hinweis dankbar. Wie gesagt ich seh mir dann erstmal die Seite an und versuch es mit einem Arry typ string.

Danke

nicht alle meine Bemerkungen so ernst nehmen

beim SQL-String hilft aber kein Wenn und aber, mit + und Variablen wird letztlich auch nur ein SQL-String draus,
wenn du nicht „VALUES (‚abc‘, …“ direkt tippen kannst, dann hilft alles andere dort auch nicht,
also keine falschen Schritte verfolgen

PreparedStatement ist aber womöglich die Alternative,


‚ich gehe auf String-Array‘ lese ich 2x,
gut, im Link ist es mit Spaltentyp ‚varchar32 ARRAY[10]‘ so gewählt,
Connection.createArrayOf() klingt aber zumindest beliebig mit Object-Typ


da komme ich irgendwie nicht umhin zu korrigieren :wink: (und nicht alles so ernst nehmen und kommentieren) :
→ Anzahl ist Integer, Zahl ist Array und mit Double ist gar nix?

ob das so funktioniert oder nicht kann ich nicht sagen, nur allgemein der Tipp sich an Tutorials zu halten

Nein ist doch ok . Ich kann leider kein Englisch und da ist mit 2 mal hinsehen nichts gemacht. Bei mir dauert das so Stunden lach. Und ich bin ja kein so Junger Hirsch wie du, ( ups sry).Aber ich hab es trotzdem gefunden. Es liegt weder an der Schreibweise noch am ARRAY. Es lagt einfach daran das der ARRAY Typ nur String und Botton und Sammlungen von Button und noch eins unterstützt. Ich habe auf String umgestellt. Geht ganz wunderbar. Das Beste an der Sache ist das die Anzahl der Elemente wird erst in der Laufzeit bestimmt werden. Ich kann also pro Satz in der Datenbank sowohl 8, 12, oder 2 Elemente im Array abspeichern. Genau das was ich gesucht habe. Du hast aber trotzdem einen Anteil dran, weil ich ja erst durch die Diskussion auf String ARRAY gekommen bin. Es ist für mich nicht so einfach da die meisten Sachen eben Englisch sind. Ein wenig Russisch kann ich ja noch, aber Englisch gab es zu meiner Zeit bei uns nicht. Ich mach den Code fertig und werd Ihn dann hier reinstellen. Du kanst dann ja mal drüber sehen was besser zu machen ist. Mein Ansatz war aber richtig. Ich hab jetzt Datenfile erstellen , Datenfile löschen , Satz einfügen, nun noch Satz löschen und Satz ändern. Wobei ich Satz ändern warscheinlich mit einfügen neu und löschen alt realisieren werde.
Danke erst mal

So Hier nun der fertige Code. Die H2 Datenbank kann nur Arry mit Strings verarbeiten. Allerdings ist die Größe der Strings im Array flexibel. So ist es möglich in einem Datensatz ein Array mit 5 und um anderen mit 10 oder auch nur 2 Elementen zu speichern. Auch das Ändern der Anzahl der Elemente in einem bestehen Datensatz ist möglich. Allerdings ist die Ausgabe von Array aus der Datenbnk einwenig gewöhnungsbedürftig. Hierbei wird die Anzahl der Elemente und das eigentliche Aray in (’ … ‘) ausgegeben. Beispiel : ar2: (‘1.123456,2.9456’). Wofür bei arx: das x ist unklar. Es ist also zum Vergleich nur die Werte in den Klammern zu verwenden. Die Übergabe der Daten an die Datenbank muß ebenfalls ohne (’ ') erfolgen. IN der Funktion 3 “Datensatz ändern” ist eine Kontrollausgabe . Da ist das zu sehen.
So hier nun der Code. ES sollte eigentlich alles gehen. Wenn nicht bitte kurze Nachricht

Ich weiß immer noch nicht wie ich code einfügen kann deswegen geht die Formatierung flöten.

 * Unter Werendendung der Systemtabelle TABLES im INFORMATION_SCHEMA der Datenbank H2 zur Erkennung von Usertabellen
 * 
 * Nutzung:  Durch ändern des Integer Auswahl können Eigene Tabellen im Benutzerverzeichnis von H2 mit 
 * 0 eine neue Tabelle erstellent werden / 
 * 1 ein datensatz hinzufügen werden/
 * 2 ein Datensatz löschen werden / 
 * 3 ein Datensatz geändert werden/
 * 4 Alle Datensätze in der Tabelle anzeigen werden / 
 * 5 Die Tabelle gelöscht werden
 * 
 * Alle Ausgaben mit System.out.println(); sind nur zur Kontrolle und Können ev. auch mit // abgeschalten werden
 * Die Anregung geht auf ein Beispiel im Netz unter http://openbook.galileocomputing.de/javainsel9/javainsel_06_001.htm zurück
 */

package datenbank;


import java.sql.Array;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;




public class DatenbankManipulationCase {
	public static void main(String[] a) throws Exception {
        
		
		Connection conn = null;
		int Auswahl =3;// 0 Tabelle erstellen / 1 datensatz hinzufügen / 2 Datensatz löschen / 3 Datensatz ändern / 4 Alle datensätze anzeigen / 5 Tabelle löschen
		
		
		
		
		// Vergleichsvariable für Auslesen aus Datenbank
		String Namee=""; // Wird zum Vergleichen mit Anbieter benöthigt. Wird beim durchlaufen der Sätze gefüllt
		String Datentype=""; // Wird zum Vergleich von Datentyp verwendet
		Integer Anzahle=0; // wird zum Vergleich von Anzahl der Elemente verwendet
		Boolean Teste= true; // wird zum Vergleich von Bolean Verwendet
		String myStringe="";  // //wird zum Vergelich des ARRAY verwendet
		
		String myString=""; // Wird zur Abspeicherung als Array typ String verwendet. erstellt aus ARRAY Position	
        
        String tab = "ANBIETER"; // Name der Datenbank
        
       
        // Satzvariable
        String Name = "test1"; // Index feld keine Doppelten Namen zugelassen
		String Datentyp = "jpg1"; // Typ der Datei		
		boolean Test = true; // Ein Wert für nachfolgende Test's wird noch nicht benöthigt
		Double Position[] = {1.123456,2.9456,3.1,5.1,8.9}; // Die Werte der Positionen wird später duch seperates Programm erstellt.
		Integer Anzahl =2; // Anzahl der Elemente im Array Position Darf nicht größer sein als elemente vorhanden sind. Kann aber kleiner sein
		
		// iElement wird nur hier gebraucht
		int iElement=Position.length;
		// Fehlerabfrage ob Anzahl der elemente gößer als die Anzahl der Elemente in der Datenbank ist
		if (iElement >= Anzahl){
		
		// Umwandeln des ARRAY Position in String zum Vergleich 
		myString =""; 
		for (int x = 0; x < Anzahl; x++) {  
				myString = myString + (Position[x].toString());
				if (x < Anzahl-1) {myString = myString+",";}
		}
		
		
        Class.forName("org.h2.Driver");            
        conn = DriverManager.getConnection("jdbc:h2:~/Boerse", "test", ""); // Einwahlparameter in H2
        Statement stmt = conn.createStatement(); 
            
            //Case für Satz Daten Manipulation und erzeugen und Löschen der Tabelle
           switch(Auswahl){
            case 0:
            	
            	ResultSet rs = stmt.executeQuery("SELECT * FROM INFORMATION_SCHEMA.TABLES ");
            	
            	// Suchen der Tabelle in der Systemdatenbank wenn gefunden dann vorhanden
            	int Auswahl1=0;
            	while (rs.next()) {
            		Namee = rs.getString(3);
            		if (Namee.equals(tab)){
            			Auswahl1=1; //x1 auf 1 setzen für Anbietertest vorhanden außerhalb der Schleife
            			break;
            		}
            	}
            		
            	if (Auswahl1==1){
            		System.out.println("tabelle "+ tab+" bereits vorhanden" ); 
            	}
            	else {
            		//Datenbank erzeugen
            		String createQ = "CREATE TABLE IF NOT EXISTS  "
            				+ tab
            				+ "(ANBIETER VARCHAR PRIMARY KEY, DATEITYP VARCHAR,ANZAHL INTEGER,Zahl Array,TEST BOOLEAN)";
            		int Ergebnis=stmt.executeUpdate(createQ);
            		 System.out.println("Neue Tabelle erstellt Name: " +tab); 
            	}
            		
            	break;
            case 1:        	
        		// Satz einfügen erst prüfen ob Anbieter schon enthalten  !!    Da Anbieter Index       	
            	
            	rs = stmt.executeQuery("SELECT * FROM " + tab);
            	
            	//Durchsuchen der Sätze ob Anbieter bereits vorhanden
            	while (rs.next()) {
            		Namee = rs.getString(1);
            		if (Namee.equals(Name)) break;             		                                                 
                }
            	
            	// Ausgabe wenn Anbieter bereits vorhanden kein neuer Satz wird eingefügt.
            	if (Namee.equals(Name)) {System.out.println("Anbieter vorhanden "+ Name);}
            	else {
            	// Einfügen Daten in neuen Datensatz
            	PreparedStatement prep = conn.prepareStatement("INSERT INTO "+tab+" (ANBIETER, DATEITYP,ANZAHL,Zahl ,TEST ) VALUES (?,?,?,?,?)");
            	prep.setString(1,Name);
            	prep.setString(2,Datentyp);
            	prep.setInt(3,Anzahl);
            	prep.setString(4,myString);// myString1 ist die Wandlung in ARAY String von Position
            	prep.setBoolean(5,Test);
				prep.executeUpdate(); 
				//Ausgabe der Daten wenn Satz eingefügt ist
        		System.out.println("Satz ==> Anbieter: "+Name+", Datentyp: "+Datentyp+", AnzahlderElenete: "+Anzahl+", Elemente: "+myString+", Kennzeichen: "+Test+" eingefügt");
            	}
        		break;
            case 2:
            	 // Satz löschen !!!!
            	 int Ergebnis=stmt.executeUpdate("Delete  FROM "+tab+" where ANBIETER = '"+Name+"';"); // Anbieter für Lösen
            	 if (Ergebnis==1) {System.out.println( "Ausgabe : "+Ergebnis+ " Satz gelöscht");} // Bei Rückgabe wert 1 positif gelöscht
            	 else {System.out.println( "Ausgabe:  "+Ergebnis+ " Sätze gelöscht Anbieter nicht vorhanden");} // Bei Rückgabewert 0 Anbieter nicht vorhanden
            	
            	break;
            	
            case 3:
            	// Satz ändern
            	/*Ergebnis=stmt.executeUpdate("Update  FROM "+tab+" where ANBIETER = Anbieter"); // Anbieter für Änderungen
            	if (Ergebnis==1) {System.out.println( "Ausgabe fehler NR: "+Ergebnis+ " Satz gelöscht");} // Bei Rückgabe wert 1 positif vorhanden
           	 	else {System.out.println( "Ausgabe fehler NR: "+Ergebnis+ " Anbieter nicht vorhanden");} // Bei Rückgabewert 0 Anbieter nicht vorhanden*/
            	
            	rs = stmt.executeQuery("SELECT * FROM " + tab);
            	Auswahl1=0;
            	while (rs.next()) {
            		
            		
            		Namee = rs.getString(1);
            		Datentype = rs.getString(2);
            		Anzahle = rs.getInt(3);
            		myStringe = rs.getArray(4).toString();// Vergleichen mit Sting
            		Teste = rs.getBoolean(5);
            		// Abbruch wenn Anbieter bereits vorhanden
            		if (Namee.equals(Name)){
            			Auswahl1=1; //x1 auf 1 setzen für Anbietertest vorhanden außerhalb der Schleife
            			System.out.println("Nur Ausgabe zum Anzeigen der Elemente ARRAY als Beispiel : "+myStringe);
            			break;
            		}
            		
            	}
            	
            	// Wenn Anbieter vorhanden Felder des Datensatzes auf Änderung überprüfen
            	if (Auswahl1==1){
            		System.out.println("Anbieter vorhanden jetzt einzelne Felder vergleichen und ev. ändern "); 
            		// Vergleich Datentyp
            		if (Datentype.equals(Datentyp)) {
            			System.out.println("Datentyp Gleich");
            		} // gleich keine Aktion
            		else {
            			//System.out.println("Datentyp geändert");
            			Ergebnis=stmt.executeUpdate("UPDATE "+tab+" SET DATEITYP= '"+Datentyp+"'  WHERE ANBIETER IN ('"+Name+"');");
            			//System.out.println(Ergebnis);
            			System.out.println("Feld Datentyp      "+Datentype+"     in :      "+Datentyp+"     geändert" );
            		}
            		// Vergleich Anzahl
            		if (Anzahle==Anzahl) {
            			System.out.println("Anzahl der Elemente gleich");// gleich keine Aktion
            		} 
            		else {
            			//System.out.println("xxxxx Anzahl ungleich");
            			Ergebnis=stmt.executeUpdate("UPDATE "+tab+" SET ANZAHL = "+Anzahl+"  WHERE ANBIETER IN ('"+Name+"');");
            			//System.out.println(Ergebnis);
            			System.out.println("Anzahl der Elemente     "+Anzahle+"     in :  "+Anzahl+"    geändert" );
            		}
            		// Vergelich Kennzeichen
            		if (Teste==Test) {
            			System.out.println("Kennzeichen Test gleich");
            		} // gleich keine Aktion
            		else {
            			//System.out.println("xxxxx Test geändert");	
            			Ergebnis=stmt.executeUpdate("UPDATE " +tab+" SET TEST= '"+Test+"'  WHERE ANBIETER IN ('"+Name+"');");
            			//System.out.println(Ergebnis);
            			System.out.println("Kennzeichen TEST      "+Teste+"       in :     "+Test+"     geändert" );
            		}
            		
            		//Vergelich der Array über string
            		
            		// alle in (' ') herrauslösen in StringT Suchen nach (+1 und )-1
            		int x2=0;
            		int x3= 0;x2=(myStringe.indexOf( "(" , x2));
            		x3=(myStringe.indexOf( ")" , x3));
            		// Testausdruck
            		//System.out.println(" Das Zeichen  ( ist an folgender Stelle "+x2+" ) ist an folgender Stelle "+x3);
            		String myStringT=myStringe.substring(x2+2, x3-1);
            		
            		//String myStringT ="('"+myString1+"')"; // Nur für Vergleich
            		//System.out.println("vergleich stringT " +myStringT+" und myString "+myString1);
            		
            		if(myString.equals(myStringT)){
            			System.out.println("ARRAY Position gleich");
            		} // gleich keine Aktion
            		else {
            			//System.out.println("xxxxx ARRAY geändert");
            			Ergebnis=stmt.executeUpdate("UPDATE "+ tab +" SET ZAHL = '"+myString+"'  WHERE ANBIETER IN ('"+Name+"');");
            			//System.out.println(Ergebnis);
            			System.out.println("ARRAY Position    "+myStringT+"    in :       "+myString+"       geändert" );
            		}
            	
            	}	
            	else {
            		//Anbieter nicht vorhanden Mitteilung Ende
            		System.out.println("Anbieter nicht vorhanden Satz einfügen benutzen !!"); 
            	}
            	break;
            case 4:
            	rs = stmt.executeQuery("SELECT * FROM " + tab);
            	// Anzeige aller Sätze
            	int i=0;
            	while (rs.next()) {
            		i=i+1;
            		Namee = rs.getString(1);
            		Datentype = rs.getString(2);
            		Anzahle = rs.getInt(3);
            		Array Positione  = rs.getArray(4);
            		Teste = rs.getBoolean(5);
            		
            		System.out.println(Namee+" "+Datentype+" "+Anzahle+" "+Positione+" "+Teste+" Durchlauf "+i); 
            		
                }
            	if (i==0 ) System.out.println(" Keine Sätze in der Tabelle");
            	break;
            case 5:
            	//Löschen der Datenbank !!!!!!
            	
            	rs = stmt.executeQuery("SELECT * FROM INFORMATION_SCHEMA.TABLES ");
            	
            	// Suchen der Tabelle in der Systemdatenbank wenn gefunden dann vorhanden
            	Auswahl1=0;
            	while (rs.next()) {
            		
            		Namee = rs.getString(3);
            		if (Namee.equals(tab)){
            			Auswahl1=1; //x1 auf 1 setzen für Anbietertest vorhanden außerhalb der Schleife
            			break;
            		}
            	}
            	
            	if (Auswahl1==1){
            		String dropQ = "DROP TABLE IF EXISTS " + tab+";";
            		Ergebnis=stmt.executeUpdate(dropQ);
            		System.out.println("Tabelle : "+tab+" gelöscht");// Hinweis Tabelle gelöscht
            	}
            	else {System.out.println("Tabelle : "+tab+" nicht vorhanden keine Aktion");}// Ausgabe Tabelle nicht vorhanden LÖschung nicht möglich
            	break;
            
            default:
            	//Fehler Ausgabe der Wert der Caseanweisungen ist überschritten
            	System.out.println("i liegt nicht zwischen null und drei");
            }
          
		
            conn.close();
    	
    	} 
		else {System.out.println("Vorgegebene Anzahl von Elementen  "+Anzahl+" ist gößer als die Anzahl der Elemente im ARRAY "+Position.length);}
	}
	
	
}

Wenn Jemand eine Verbesserung hat wäre ich nicht böse.

statt QUOTE-Tags JAVA-Tags für Java-Code

myString, myStringe, myStringT sind etwas unglückliche Variablennamen,
da helfen dann auch noch so viele Kommentarzeilen nicht,
lieber sprechende Variablennamen nehmen

Spalte ‚Zahl‘ für das Array in der DB gegenüber Java-Array-Name ‚Position‘ ist sowieso schon ungünstiger Gegensatz,
aber halte dich dann zumindest in Java in der Richtung, positionArray, positionToString, irgendwas hilfreiches

prep.setString(4,myString);
funktioniert mit diesem String? erstaunlich

„// Umwandeln des ARRAY Position in String zum Vergleich“
ist dann etwas untertrieben, bisher auch dein Weg zum Speichern?


und ich habe heute Variablen-Benennungs-Mecker-Tag:

alle Variablen übrigens unbedingt klein schreiben! zur Unterscheidung von Klassen

ein keines e hinten angefügt ist kein guter Suffix,
Name/ Namee, Test/ Teste sind zu wenig unterscheidbar, zu normale Namen,

besonders bei Datentyp/ Datentype, schließlich ist ‚type‘ im Englischen korrekt,
und droht in Programmierung an jeder Ecke aufzutauchen, bei englischen Klassen/ Methoden aus der API

hier zwar nicht, aber im Code vom ersten Posting hast du immerhin auch selber
ResultSet metaRS = md.getTables(null, null, "%", types);

wenn schon alle Variablen verdoppeln dann lieber
nameVGL, testVGL oder ähnliches


if (Auswahl1==1){
bei solchen Variablen besser keine 1 usw. am Ende, geht nicht A, B, C? :wink:

Ok werd mich bessern. Ich kann das ganze ja noch umbauen. Ist ja mit eclipse kein Problem. Ansonsten hat aber alles funktioniert. Bin jetzt erstmal bei der Nächsten Baustelle. Danke dir für die Anregung. Irgendwie wird man betriebsblind. Ich habe in pascale auch meist mit integer getestet. Aber du hast recht kenn ja auch char nehmen kein Problem. Ich denke ich werde dir noch einiges zum meckern liefern .

als Wert für Auswahl eine Zahl oder char ist gleichwertig, die Zahl sogar besser,
ich war eben immer noch bei Variablennamen : 1 = 1 sieht so komisch aus, verleitet zum Fehler, auch zum falschen Lesen,
lieber eindeutiger if (auswahlA==1){,

aber wie alles nur als ‚hat wohl sonst nichts zu tun/ zum Schreiben‘ werten :wink: