ECLIPSE-ben letöltés MSSQL-ből és mentés telefonba

ECLIPSE-ben letöltés MSSQL-ből és mentés telefonba
2013-08-16T01:58:43+02:00
2013-08-22T11:55:54+02:00
2022-11-29T15:25:43+01:00
thetester
Hello!!

Most próbálgatom ezt az Eclipse-t is a B4A helyett (Androidra programot készíteni), és egy olyat szeretnék, hogy kapcsolódok egy szerver MSSQL-jéhez (php fájljához), ami visszaad egy listát, ez eddig meg van. Le akarom tölteni az adatokat:
id, nev, telszam
majd a telefon saját adatbázisába?! elmenteni, hogy ha legközelebb futtatom a programot, akkor már egy listview-be mutassa.

A szervert megcsináltam, vissza is adja a fájlokat, csak letölteni és a telefonba tárolni nem tudom..

Hogyan lehetne?!?
Köszönöm!!
TheTester
Mutasd a teljes hozzászólást!
Http GET,POST parancsokkal web site-ot kérdezi Androidban:
package com.xTaxi; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import android.os.Handler; import android.util.Log; public class xHttpNet { public static final int REGISTRATION_TIMEOUT_MS = 30 * 1000; // ms public static final String http_base_url = ""; // public static final String http_base_url = ""; public static final String http_utasrendel_uri = http_base_url + "/utasrendeles.php"; public static final String http_utastaxi_uri = http_base_url + "/utastaxi.php"; public static final String http_post_nev = "nev"; public static final String http_post_cim = "cim"; public static final String http_post_telefon = "tel"; public static final String http_post_koord_lat = "lat"; public static final String http_post_koord_lng = "lng"; public static final String http_post_key = "key"; public static final String http_post_ido = "ido"; public static final String http_post_cimkod = "cimkod"; public static final String http_post_adat = "adat"; public static final String http_post_index = "index"; // TEST! public static final String TAG = "xHttpNet"; private static HttpClient mHttpClient; public static void maybeCreateHttpClient() { if (mHttpClient == null) { mHttpClient = new DefaultHttpClient(); final HttpParams params = mHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, REGISTRATION_TIMEOUT_MS); HttpConnectionParams.setSoTimeout(params, REGISTRATION_TIMEOUT_MS); ConnManagerParams.setTimeout(params, REGISTRATION_TIMEOUT_MS); } } public static Thread performOnBackgroundThread(final Runnable runnable) { final Thread t = new Thread() { @Override public void run() { try { runnable.run(); } finally { } } }; t.start(); return t; } /** TAXI KOORDINATA LEKERDEZESE **/ public static boolean getTaxiKoord(final String cimkod, final String key, final String index, final boolean getTaxiData, final Handler handler, final Context context) throws Exception { if ((cimkod == null) || (key == null)) return false; final ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(http_post_cimkod, cimkod)); params.add(new BasicNameValuePair(http_post_key, key)); params.add(new BasicNameValuePair(http_post_index, index)); if (getTaxiData) params.add(new BasicNameValuePair(http_post_adat, "igen")); maybeCreateHttpClient(); HttpEntity entity = null; String strtemp; try { entity = new UrlEncodedFormEntity(params,HTTP.UTF_8); } catch (final UnsupportedEncodingException e) { throw new AssertionError(e); } final HttpPost post = new HttpPost(http_utastaxi_uri); post.addHeader(entity.getContentType()); post.setEntity(entity); ResponseHandler<String> responseHandler=new BasicResponseHandler(); String responseBody = "NC"; JSONObject response =null; try { strtemp = mHttpClient.execute(post,responseHandler); responseBody = strtemp.trim(); response=new JSONObject(responseBody); } catch (final IOException e) { sendTaxiResult("NC", handler, context); return false; } finally { //Log.v(TAG, "Resp:" + responseBody ); sendTaxiResult(responseBody, handler, context); } return true; } public static Thread setTaxiKoord(final String cimkod, final String key, final String index, final boolean getTaxiData, final Handler handler, final Context context) { final Runnable runnable = new Runnable() { public void run() { try { getTaxiKoord(cimkod, key, index, getTaxiData, handler, context); } catch (Exception e) { e.printStackTrace(); } } }; return xHttpNet.performOnBackgroundThread(runnable); } private static void sendTaxiResult(final String result, final Handler handler, final Context context) { if (handler == null || context == null) { return; } handler.post(new Runnable() { public void run() { ((xGoogleMap) context).onHttpResult(result); } }); } /** RENDELES **/ public static boolean rendeles(final HashMap<String, String> mapRendel, final Handler handler, final Context context) throws Exception { if (mapRendel.isEmpty()) return false; for (HashMap.Entry<String,String> entry : mapRendel.entrySet()) { // System.out.printf("%s -> %s%n", entry.getKey(), entry.getValue()); if ((entry.getKey().length() == 0) || (entry.getValue().length() == 0)) return false; } final ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(http_post_nev, mapRendel.get("nev"))); params.add(new BasicNameValuePair(http_post_telefon, mapRendel.get("tel"))); params.add(new BasicNameValuePair(http_post_cim, mapRendel.get("cim"))); params.add(new BasicNameValuePair(http_post_koord_lat, mapRendel.get("lat"))); params.add(new BasicNameValuePair(http_post_koord_lng, mapRendel.get("lng"))); params.add(new BasicNameValuePair(http_post_key, mapRendel.get("key"))); params.add(new BasicNameValuePair(http_post_ido, mapRendel.get("ido"))); maybeCreateHttpClient(); //final HttpResponse resp; HttpEntity entity = null; try { entity = new UrlEncodedFormEntity(params,HTTP.UTF_8); } catch (final UnsupportedEncodingException e) { throw new AssertionError(e); } final HttpPost post = new HttpPost(http_utasrendel_uri); post.addHeader(entity.getContentType()); post.setEntity(entity); ResponseHandler<String> responseHandler=new BasicResponseHandler(); String responseBody="11"; JSONObject response =null; try { responseBody = mHttpClient.execute(post,responseHandler); response=new JSONObject(responseBody); } catch (final IOException e) { sendResult("NC", handler, context); return false; } finally { //Log.v(TAG, "Resp:" + responseBody ); sendResult(responseBody, handler, context); } return true; } public static Thread setRendeles(final HashMap<String, String> mapRendel, final Handler handler, final Context context) { final Runnable runnable = new Runnable() { public void run() { try { rendeles(mapRendel, handler, context); } catch (Exception e) { e.printStackTrace(); } } }; return xHttpNet.performOnBackgroundThread(runnable); } private static void sendResult(final String result, final Handler handler, final Context context) { if (handler == null || context == null) { return; } handler.post(new Runnable() { public void run() { ((xRendeles) context).onHttpResult(result); } }); } }

Ugyanannak a programnak a SQLiteDatabase része

package com.xTaxi; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "xtaxi.db"; private static final int DATABASE_VERSION = 1; public static final String TABLENAME1 = "system"; public static final String KEY_ROWID_1 = "_id"; public static final String KEY_NAME = "uname"; public static final String KEY_TELE = "utelefon"; public static final String KEY_EMAIL = "uemail"; public static final String KEY_KEY = "ukey"; public static final String TABLENAME2 = "ugyfelcim"; public static final String KEY_ROWID_2 = "id"; public static final String KEY_CIM = "ucim"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLENAME1 + " (" + KEY_ROWID_1 + " INT(3), " + KEY_NAME + " VARCHAR, " + KEY_TELE + " VARCHAR, " + KEY_EMAIL + " VARCHAR, " + KEY_KEY + " VARCHAR);"); db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLENAME2 + " (" + KEY_ROWID_2 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_CIM +" VARCHAR);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion >= newVersion) return; String sql = null; if (oldVersion == 1) //sql = "alter table " + TABLENAME1 + " add note text;"; sql = "drop table if exists " + TABLENAME2; if (oldVersion == 2) sql = ""; Log.v("EventsData", "onUpgrade : " + sql); if (sql != null) db.execSQL(sql); } }
Mutasd a teljes hozzászólást!

  • Szia!!

    Még egy adatbázis szerkezetet is tudsz küldeni??! Meg, hogy PHP mit ad ki, hogy ez leszedni?

    Köszönöm!!
    TheTester'
    Mutasd a teljes hozzászólást!
  • 1.)php.zip a fájlok, csak teszthez jó.
    2.)"Még egy adatbázis szerkezetet is tudsz küldeni??!"
    Nem tudok, mert dinamikusan hozom létre. A kódban látszik az adatbázis szerkezete:

    public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLENAME1 + " (" + KEY_ROWID_1 + " INT(3), " + KEY_NAME + " VARCHAR, " + KEY_TELE + " VARCHAR, " + KEY_EMAIL + " VARCHAR, " + KEY_KEY + " VARCHAR);"); db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLENAME2 + " (" + KEY_ROWID_2 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_CIM +" VARCHAR);"); }

    Látom te sokat melózol:
    Én már egyre többet:
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Nem lett jó?
    Nem hiszem.
    Nyitottál egy új topikot a témában?
    Lehet ilyet tenni?

    Ez az

    Javaról áttértél Basicre....
    Ehhez hasonló esetek után elmegy az embernek a kedve a segítéstől...
    Mutasd a teljes hozzászólást!
  • Szia!!

    Nem, próbáltam ebben is, abban is... Azt szerettem volna megtudni, h melyikben könnyebb.. De mindegyikben eléggé nehézkes.. és most Eclipse-hez találtam leírást..

    Szerinted melyikben érdemes inkább nekiállni??!

    Köszönöm!!!!!!!!
    TheTester'
    Mutasd a teljes hozzászólást!
  • Egyértelműen Java-ban.
    Android Java alapú és tele az internet mintaprogramokkal.
    Tanulj meg Java-ban programozni.
    Abból meg tudsz élni.
    Nem menne, akkor (netangel idézzem) munka/állás rovatba rakjad át a topikot.
    Taxi társaság használja az app-ot, nekik működik.:)
    Nem az app-ban van a hiba, hanem benned.
    Ennyit tudtam segíteni.
    Mutasd a teljes hozzászólást!
  • Hali!

    Javaról áttértél Basicre....
    Ehhez hasonló esetek után elmegy az embernek a kedve a segítéstől...


    Pedig, ha ránéztél volna a téma nyitásának dátumára, akkor felismerhetted volna, hogy ezt a témát 2013. augusztus 16-án, míg a másikat 2013. július 30-án (tehát, korábban) nyitotta. Így max. arról lehet beszélni, hogy Basic-ről áttért Java-ra.

    Nem kell egyből a legrosszabbra gondolni.

    Mutasd a teljes hozzászólást!
  • Akkor meg fordítva.
    Szóval.
    Ez az egész prog pont adás/gyűjtés nem jó!
    Nézd meg.
    Tele van nem lezárt topikkal a fórum.
    Sokan segíteni próbálnak, majd a topkinyitók eltűnnek, vagy más témákra áttérnek és nem zárják le a topikokat így vagy úgy.
    A pontgyűjtés nagyon fontos sokunknak.
    Onnan tudom, hogy sok távmunkás így kap munkát.
    A megbízó látja a szakértelmüket.
    Szóval kettőn áll a vásár.
    Aki kérdez, és aki válaszol.
    Mindenki jól jár, ha lezárják a topikot.
    Vagy 0 pont, vagy 10-20-x-50 pont.
    Lenne egy záros határidő pl. 1 hónap.
    Mutasd a teljes hozzászólást!
  • Ez így van, igazat is adok mindenkinek!!

    Először Basicc-el kezdtem, de eléggé körülményesnek tartottam, és így ahogy mondtad, JAVA-s példából sokkal többet találtam.

    Egy olyan egyszerű (számomra elsőként annak tűnt), programot szerettem volna, hogy a MsSQL szerveremről leszedek adatokat a telóra, és elrakom adatbázisba. Ha már egyszer letöltöttem, akkor még egyszer ne töltse le, ha nem kattintok a frissítés gombra. Addig a teló saját adatbázisából dolgozna.
    Ennyi lett volna a terv, de egyenlőre még ECLPISE-ben ott is el vok akadva, hogy hogyan tudnék új képernyőt létrehozni, ahol mondjuk ott a frissítés gomb.. :S :( :(

    Basic-es témán én is gondolkodom, h lezárjam, vagy mi legyen vele.. de azt hiszem az lesz a sorsa..

    Köszönöm a segítségeket!!

    TheTester'
    Mutasd a teljes hozzászólást!
  • Szerintem vannak itt egy kicsit fogalmi és tudáshiányból adódó problémák.

    0. Mivel akarod letölteni az adatokat az MSSQL adatbázisból?

    a.) JDBC: ez csak akkor játszik, ha privát felhasználásra csinálod az appot, vagy nagy vállalati működésre, belső használatra, egyébként nem nyitható meg a nagyközegnek.
    b.) Socket alapú szerver, ezzel inkább ne küzdj.
    c.) HTTP alapú kommunikáció
    d.) SOAP alapú kommunikáció

    1. A fentiekből javasolt a HTTP vagy SOAP alapú kommunikáció. Ilyenkor szükséged van egy szolgáltatásra (és nem szerverre / szerverprogramra), amit megírsz, és a neked tetsző formátumban adja az adatokat.
    Ha HTTP, akkor tipikusan JSON, de lehet XML formátumú adat is (ezek szabványosabbak), de akár lehet sima text / CSV / akármicsoda formátum is, lényeg, hogy letöltéskor tudd értelmezni az android appból.
    Ha SOAP, akkor az egy speciális XML, ahhoz kell még neked WSDL, és egyéb nyalánkság is.

    2. A letöltést nem eclipseből csinálod. Eclipseben fejlesztesz, és az teljesen független attól, hogy az Android telefonodra fejlesztel.

    3. Hol, milyen szerveren akarod publikálni a szolgáltatást (ha nem csak magadnak fejlesztesz appot...)

    4. Azzal, hogy Androidra fejlesztesz appot, nem az Eclipset kell megtanulnod, hanem az Androidos javat, és vele együtt az SQLite kezelést.
    (Van másik nagyon jó fejlesztőeszköz is, ami javas, pl. Android Studio).
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd