Toon posts:

[Android] MySQL Connection

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik ben op dit moment bezig met een applicatie voor Android. De applicatie werkt tot nu toe prima maar ik loopt vast een verbinding maken naar een MySQL Database. Het is mijn bedoeling dat dit uiteindelijk in de Market komt.

Op dit moment heb ik dit, maar ik krijg dit niet werkend:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 private static Connection connect () 
    {
        Connection conn = null;     
    
            try
        {
            conn = DriverManager.getConnection("localhost", "root", "");            
             System.out.println("Connection gemaakt");
        }
        catch (Exception ex)
        {
            Log.v("Database connect()", ex.getMessage());
            System.out.println("SQLException: " + ex.getMessage());             
        }       
        
        return conn;
    }


Ik krijg de volgende fout: "No suitable driver found", nu heb ik al op Google gezocht en zie ik hier diverse oplossingen die ik ook al geprobeerd heb. Het enige probleem is dat ik deze oplossingen niet werkend krijg.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Welke oplossing zijn dat dan en welke daarvan heb je al geprobeerd? Het zou me niet verbazen als de MySQL driver niet meegeleverd wordt met Android, dus lever je deze zelf mee?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb deze driver geïmporteerd;
http://dev.mysql.com/downloads/connector/j/3.0.html

Ik heb ook verschillende connection strings geprobeerd, maar die blijken ook niet te werken.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14:14

Matis

Rubber Rocket

Neem je de driver wel mee in je buildpath?

Daarnaast is MySQL over het internet performance-wise niet echt positief te noemen. Helemaal niet over een mobiel netwerk, maar dat terzijde.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik kan je niet direct helpen met je probleem, maar het lijkt mij niet dat je op localhost een MySql database hebt draaien op Android. Zoals Matis al zegt is het niet aan te raden om over internet direct naar een database te verbinden. Is het niet makkelijker om een web-service te bouwen die de database calls doet, en die webservice weer vanuit je Android applicatie aan te roepen. Op die manier hoef je niet je login gegevens van je database met je applicatie mee te leveren. Het lijkt me namelijk nogal ondoenlijk om voor alle gebruikers van je applicatie een MySql user aan te maken.

Voor een lokale database is het op android gebruikelijk om gebruik te maken van SQLite

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Heb je http://www.developer.com/java/data/article.php/3417381 uberhaupt al bekeken? (die wordt direct gelinkt vanaf http://dev.mysql.com/usingmysql/java/). Je zal de classloader moeten forceren om de driver te laten met een Class.forName, maar dat zie ik nergens in je code terug.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De .Jar file is ook toegevoegd aan het buildpath.

Ik heb op dit moment een website, waarop je kan inloggen door middel van een login en een wachtwoord. Die worden opgeslagen in een MySQL database. Wat er dus moet gebeuren is dat je eenmalig inlogt op je telefoon zodat je 'device' toegevoegd wordt aan de database. Dat het niet heel erg snel is dat maakt niet heel veel uit hiervoor denk ik.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op dinsdag 15 maart 2011 @ 11:38:
Wat er dus moet gebeuren is dat je eenmalig inlogt op je telefoon zodat je 'device' toegevoegd wordt aan de database.
Maar als je al een web-site hebt waar je een username-password combinatie hebt, dan is het toch makkelijker om die te gebruiken, en de credential check in een web-service plaatst te laten vinden. Op die manier hoef je helemaal niet naar de database te verbinden. Het lijkt mij qua onderhoudbaarheid, en flexibiliteit niet handig om al die users ook als db users aan te moeten maken.

[ Voor 31% gewijzigd door Woy op 15-03-2011 11:43 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Umbrah
  • Registratie: Mei 2006
  • Laatst online: 17:12

Umbrah

The Incredible MapMan

Yup, hoewel het zijn beperkingen heeft is een local-host SQLite de defacto standaard (en gelijk het enige wat ondersteund wordt). Je zult in principe sowieso localhost willen of je gegevens via een website willen binnenscrapen, wat zelfs bij MySQL het beste geval is.

Een simpele oplossing is een simpel PHP-scriptje wat input SQL accepteerd en output een tabel geeft. Connectie wordt afgehandeld door de website zelf.

Local MySQL draaien op Android kan niet en dat kun je niet vragen aan gebruikers. Sowieso zul je het dan zelf moeten compilen/embedden en zó verschrikkelijk embedded-vriendelijk is MySQL nou ook weer niet, overweeg dan zelfs firebird.

Maar goed, waarom je moeilijk zou doen om FireBird/MySQL hun server en connector modules te porten weet ik niet, immers: SQLite bestaat en is er voor bedoeld. Het heeft qua query-complexiteit een paar beperkingen met name qua Joins, maar daar valt makkelijker omheen te werken waarschijnlijk dan volledig MySQL porten in connector/server versie, een MySQL verbinding over 3G op te stellen, of zelfs een PHP script te maken wat je kunt scrapen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou, het is dus de bedoeling dat op het moment je inlogt met je telefoon je device toegevoegd wordt aan de database. En op dat moment kan je via de website je device aan klikken omdat hij dan gekoppeld is aan je account.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op dinsdag 15 maart 2011 @ 11:53:
Nou, het is dus de bedoeling dat op het moment je inlogt met je telefoon je device toegevoegd wordt aan de database. En op dat moment kan je via de website je device aan klikken omdat hij dan gekoppeld is aan je account.
Maar waarom zou je daarvoor MySql access nodig hebben? Op het moment dat je applicatie opstart en je inlogt, doet hij een web-service call naar je webserver, die voegt je device toe. Dan heb je niks meer met MySQL te maken.
Umbrah schreef op dinsdag 15 maart 2011 @ 11:45:
Je zult in principe sowieso localhost willen of je gegevens via een website willen binnenscrapen, wat zelfs bij MySQL het beste geval is.
Hoezo zou je willen scrapen als je ook gewoon een gestructureerde manier zoals een webservice kan aanbieden. Scrapen is alleen handig als er geen andere vorm van data mogelijk is. Scrapen is natuurlijk ook totaal niet handig als je nog eens het uiterlijk van je site wil veranderen.
Een simpele oplossing is een simpel PHP-scriptje wat input SQL accepteerd en output een tabel geeft. Connectie wordt afgehandeld door de website zelf.
En je hebt meteen weer een scala van security issues geintroduceert.
Maar goed, waarom je moeilijk zou doen om FireBird/MySQL hun server en connector modules te porten weet ik niet, immers: SQLite bestaat en is er voor bedoeld.
Zo te zien gaat het hem niet om een lokale database

[ Voor 47% gewijzigd door Woy op 15-03-2011 12:07 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 18:34

remco_k

een cassettebandje was genoeg

Verwijderd schreef op dinsdag 15 maart 2011 @ 11:53:
Nou, het is dus de bedoeling dat op het moment je inlogt met je telefoon je device toegevoegd wordt aan de database. En op dat moment kan je via de website je device aan klikken omdat hij dan gekoppeld is aan je account.
Dus dan lees je de posts boven je en pas je die tips toe. :)

Voor zover ik je bedoeling begrijp draait die MySQL database ergens online op het internet.
Het zou je reeds duidelijk moeten zijn dat je Android niet moet willen connecten naar die MySQL database server, dus zal je er een laag tussen moeten maken: een webservice op je website, die heeft de verbinding met MySQL en Android laat je connecten met die webservice. Simpeler kan het bijna niet.

Edit: ik had 10 seconden eerder op versturen moeten drukken, :'(

[ Voor 4% gewijzigd door remco_k op 15-03-2011 12:05 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het inmiddels opgelost door deze tutorial te volgen:
http://www.developer.com/java/data/article.php/3417381

Werkt goed! Bedankt voor jullie hulp en tips!
Pagina: 1