Suche von MSSQL-Daten innerhalb einer ListView

A

AlexOB

Neues Mitglied
0
Moin zusammen,

ich habe folgendes Problem. Ich habe einen MSSQL Server, dessen Daten in einem ListView angezeigt werden. Bisher bin ich leider daran verzweifelt, eine Suchfunktion in die App zu integrieren. Sprich ich habe extrem viele Datensätze aus der MSSQL-Datenbank in die ListView geladen und diese möchte ich nun anhand einer einfachen Suche filtern. Bei Google habe ich immer nur tutorials zu MySQL Datenbanken gefunden, mit denen ich jedoch nichts anfangen kann.

Liebe Grüße,

Alex
 
@AlexOB

a) Man verwendet kein ListView mehr - das hatte ich Dir bereits in einem vorherigen Thread mitgeteilt.
Daten einer CSV Datei einlesen, bearbeiten und speichern
b) Auf Clientseite verwendet man keine M(y)SSQL sondern eine SQLITE.
Dort kannst du dann genau so ein Query absetzen , wie bei MySQL - der Syntax ist nahezu äquivalent.
Im zurück gelieferten Cursor hast du dann auch Deine Result-Items.

Du solltest dabei grundsätzlich eine Vererbung der SQLiteOpenHelper Klasse benutzen .
 
Zuletzt bearbeitet:
@swa00 seine DB ligt wohl auf eine. Server nicht lokal auf den Handy.

Auf die MySQL vom Server kannst und soltest du nicht direkt zugreifen. Sondern mit einem Backend zb REST System.
 
  • Danke
Reaktionen: swa00
@jogimuc

Im anderen Thread schreibt er :
Die Inventurdaten stehen jetzt ebenfalls in einer SQL-Datei zur verfügung und können per List-View in der App angezeigt werden

Von Remote und REST schreibt er leider nichts
 
Zuletzt bearbeitet:
[Ich habe einen MSSQL Server, dessen Daten in einem ListView angezeigt werden. ]

Da gehe ich von einem Server aus.
 
Na dann soll er sich mal äußern , was er denn genau vom letzten Thread umgesetzt hat.
Ich vermute, er hat keine REST und greift direkt drauf zu ( 3306 Port)

Das würde dann Sinn ergeben , warum er kein Query absetzen kann :)
 
  • Danke
Reaktionen: jogimuc
Erst alle Datensätze holen und danach filtern ist suboptimal. Man baut den Query so, dass schon der richtige Datensatz geholt wird.
 
@Wald-Otto

Sehe ich nicht so, wenn man mit RecyclerView und Adapter arbeitet.
Dieser arbeitet bereits dynamisch im UI - Thread -

Ein immer wieder erneutes Einlesen der Arraylist ist da für eine SortierRoutine unnötig - ein schlichtes Collection im Ram reicht
da schon aus.
 
  • Danke
Reaktionen: jogimuc
Im Prinzip hast du Recht, allerdings sprach der OP von "extrem vielen Datensätzen".

Wäre mal interessant zu wissen, wieviel "extrem viel" ist, wie groß ein Datensatz ist und wie die Systemanforderung der App sein soll.
 
Moin. Da ich jetzt schon alles mit dem Listview gebaut habe und das super funktioniert, würde ich da ungern etwas dran ändern.

Um hoffentlich alle Fragen abzudeken, beschreibe ich meinen bisherigen Stand nochmal genauer. Ich habe mir dem Microsoft SQL Management Studio eine Datenbank angelegt. Für den Zugriff habe ich die folgende "Connection.Class" erstellt.

@SuppressLint("NewApi")
public Connection connectionclasss(String user, String password, String database, String server)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection connection = null;
String ConnectionURL = null;
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
ConnectionURL = "jdbc:jtds:sqlserver://" + server +";databaseName="+ database + ";user=" + user+ ";password=" + password + ";";
connection = DriverManager.getConnection(ConnectionURL);
}
catch (SQLException se)
{
Log.e("error here 1 : ", se.getMessage());
}
catch (ClassNotFoundException e)
{
Log.e("error here 2 : ", e.getMessage());
}
catch (Exception e)
{
Log.e("error here 3 : ", e.getMessage());
}
return connection;
}}

Login sowie Registrierung funktionieren super. Ebenfalls kann ich alle Daten (in Excel knapp 140.000 Zellen) in einer Liste anzeigen lassen. Hierbei handelt es sich dann z.b. um Artikelnummern, Bezeichnungen, Bestand, Chargennummer. Aufgrund der Vielzahl an Daten, möchte ich gerne nach Artikelnummern und Bezeichnungen suchen, sodass ich diese anklicken und in einer nächsten Activity bearbeiten kann. Die Aktivity zum Bearbeiten funktioniert auch schon. Das Einzige was jetzt noch fehlt ist die Suchfunktion und das bestimmte Daten des ausgwählten Datensatzes an TextViews in der nächsten Activity übergeben werden.

Ich hoffe es ist nun etwas deutlicher geworden, wie ich die Verbindung zur DB hergestellt habe und was mein Ziel ist.
 
@AlexOB

Danke für deine Aufklärung.

Ich müsste mich an dieser Stelle leider "ausklinken", denn deinem Aufbau fehlt es in mehreren Teilen an Konformität.
Egal was wir auch anraten ( und hier sitzen hauptberufliche Entwickler mit mehreren Jahren Praxiserfahrung) , irgendwie schleicht sich der Eindruck ein , dass Du unsere Hilfestellungen eigentlich "ignorierst" :)
Stichpunkte : REST-API, SQLite usw. usw.

Da können/möchten wir leider auch nicht mehr unterstützen , wenn du Dir lieber einige recht veraltete Bespiele aus dem Netz saugst :)

Im Einzelnen :
Du verwendest eine unbekannte Library aus 2012, die nicht für Android konzipiert ist. Das bedeutet, das ist 10 Jahre her und maximal für JellyBean zu verwenden. Das hat leider mit dem heutigen Aufbau und Richtlinien einer App nichts mehr gemeinsam. (Insbesondere der Strict Mode ohne Thread Verwaltung)

Wenn ich mir das Repository der Library anschaue ist es auch nur für den lokalen und nicht für den Remote-Einsatz gedacht.
Der Server ist offen wie ein Scheunentor und es wird hier eindeutig eine direkte PortVerbinung aufgebaut - aber das ist ja dein Ding.
Darf man erfahren , warum Du diese veraltete Lib dann dennoch benutzt und nicht auf die empfohlenen Hausmittel von Android zugreifst ?

Grundsätzlich gehört ein Request bei Android auch in einen Thread - das fehlt hier gänzlich, und - auch wenn du darauf beharrst, einen ListView zu verwenden - Spätestens wenn du damit in der Praxis arbeitest, wirst du ggf. feststellen, dass ohne RecyclerView und Thread die App schlichtweg nicht mehr zu bedienen ist und nur auf einer geringen Anzahl von Devices läuft.

Ein ListView ist maximal für ein paar Elemente gedacht - es ist statisch, besitzt keinen dynamischen Adapter und verwaltet das Memory (ArrayList) nicht - das wird eindeutig unstabil. Ein wesentliches Feature, welches du gerade für dein Vorhaben benötigst.......

Das Einzige was jetzt noch fehlt ist die Suchfunktion und das bestimmte Daten des ausgwählten Datensatzes an TextViews in der nächsten Activity übergeben werden.
Um Diese Frage ansich zu beantworten , solltest Du dich also bitte an die Jungs der Library wenden.

Good Luck
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Wald-Otto und jogimuc

Ähnliche Themen

A
Antworten
1
Aufrufe
641
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
487
jogimuc
J
A
Antworten
10
Aufrufe
1.927
swa00
swa00
Zurück
Oben Unten