PF2G Posted October 18, 2012 at 05:04 PM Report #479642 Posted October 18, 2012 at 05:04 PM (edited) Boas, Eu estou a desenvolver uma aplicação para Android e preciso de ligar a uma base de dados MySQL, mas não estou a conseguir... Este é o codigo que estou a usar: connection class: public class MySQLConnect extends Activity{ public void onCreate(Bundle savedInstanceState) { } public static void connection(String[] args ) throws Exception{ Class.forName("com.mysql.jdbc.Driver"); Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost/prom.pt_test", "root", "root"); PreparedStatement statement = con.prepareStatement("SELECT * FROM users"); ResultSet result=statement.executeQuery(); while(result.next()){ System.out.println(result.getString(1) + "" + result.getString(2)); } } } Android manifest: <activity android:name=".MySQLConnect" > startActivity: Button testButton = (Button) findViewById(R.id.button1); testButton.setonclickListener(new View.onclickListener() { @Override public void onclick(View v) { startActivity(new Intent(LoginScreen.this, MySQLConnect.class)); } }); Algué me pode ajudar, sff? Obrigado, PF2G Edited October 19, 2012 at 04:07 PM by KTachyon Geshi
KTachyon Posted October 19, 2012 at 04:10 PM Report #479764 Posted October 19, 2012 at 04:10 PM De certeza que tens uma base de dados MySQL no Android? É que estás a utilizar 'localhost' como endereço da base de dados. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
apocsantos Posted October 19, 2012 at 08:00 PM Report #479805 Posted October 19, 2012 at 08:00 PM Boa noite, A questão que o @KTachyon é a mesma que eu te coloco... Não tens como instalar MySQL numa plataforma android, logo a connection string não pode estar correcta. Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost/prom.pt_test", "root", "root"); Que SGBD estás a usar ? Se estiver instalado localmente no equipamento Android MySQL não será com certeza. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
PF2G Posted October 26, 2012 at 05:07 PM Author Report #480595 Posted October 26, 2012 at 05:07 PM (edited) Boa tarde, Eu não estou a conseguir fazer o connect à localhost à DB. E estou farto de trocar cenas, fazer imports e nada. Este é o neu codigo: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; testButton.setonclickListener(new View.onclickListener() { public void onclick(View v) { try { Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); Connection conn = DriverManager.getConnection("website.comt/index.php", "username", "*****"); Statement stmt = conn.createStatement(); try { String query = "SELECT * FROM users"; String args[] = null; for(int i = 0; i < args.length; i++) { query += args[ i ]; if( i+1 < args.length ) query += "', '"; } query += "')"; System.out.println("Query: " + query); stmt.executeUpdate(query); } catch( SQLException e ) { System.out.println( "SQLException: " + e.getMessage() ); System.out.println( "SQLState: " + e.getSQLState() ); System.out.println( "VendorError: " + e.getErrorCode() ); } } catch(Exception e) { System.out.println("Holy crap, Batman!"); System.out.println(e.getMessage()); e.printStackTrace(); System.out.println( "Remember: mandatory fields include:" ); System.out.println( "title, year, length, rating, url, stars" ); } } Será que alguém me pode ajudar? Agradeço a vossa ajuda. Obrigado, PF2G Edited October 30, 2012 at 05:46 PM by PF2G geshi
HappyHippyHippo Posted October 26, 2012 at 05:12 PM Report #480597 Posted October 26, 2012 at 05:12 PM estanho ... não conheço este tipo de IP : 192.168.1.XXX IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
apocsantos Posted October 26, 2012 at 06:05 PM Report #480600 Posted October 26, 2012 at 06:05 PM Boa tarde, import java.sql.*; testButton.setonclickListener(new View.onclickListener() { public void onclick(View v) { try { String driver = "com.mysql.jdbc.Driver"; String connection ="jdbc:mysql://127.0.0.1:3306/teste"; String user = "u1"; String password = "p1"; Connection con = DriverManager.getConnection(connection, user, password); Statement stmt = con.createStatement(); String query = "SELECT * FROM users"; String args[] = null; for(int i = 0; i < args.length; i++) { query += args[ i ]; if( i+1 < args.length ) query += "', '"; } query += "')"; System.out.println("Query: " + query); stmt.executeUpdate(query); } catch( SQLException e ) { System.out.println( "SQLException: " + e.getMessage() ); System.out.println( "SQLState: " + e.getSQLState() ); System.out.println( "VendorError: " + e.getErrorCode() ); System.out.println("Holy crap, Batman!"); System.out.println(e.getMessage()); e.printStackTrace(); System.out.println( "Remember: mandatory fields include:" ); System.out.println( "title, year, length, rating, url, stars" ); } } } Não estarás a ter um problema de âmbito ??? Pelo que vi estas a usar duas estruturas "try - catch". Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
PF2G Posted October 27, 2012 at 09:33 AM Author Report #480655 Posted October 27, 2012 at 09:33 AM (edited) Ja fiz dessa maneira e continua sem funcionar, da erro: java.sql.SQLException: no suitable driver. Edited October 27, 2012 at 11:17 AM by PF2G
HappyHippyHippo Posted October 27, 2012 at 12:27 PM Report #480665 Posted October 27, 2012 at 12:27 PM primeiro : programar para o android usas java mas não indica que estás a usar toda a framework do java segundo : estás a ir por um caminho sem saída = http://www.basic4ppc.com/forum/basic4android-updates-questions/11443-connect-directly-android-mysql.html Android doesn't include the required libraries. The recommended method (by myself and others) is to use a web service as explained in this tutorial: http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/8339-connect-android-mysql-database-tutorial.html IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PF2G Posted October 27, 2012 at 04:19 PM Author Report #480703 Posted October 27, 2012 at 04:19 PM HippyHippo ainda nao vi os teus links, mas ja os vou verificar. Antes disso, podes-me dizer onde fica a pasta WEB-INF/lib é que eu li que o .jar tem de estar nesta pasta, mas eu nao sei onde é que está :S Obrigado pela ajudar, PF2G
KTachyon Posted October 27, 2012 at 05:11 PM Report #480704 Posted October 27, 2012 at 05:11 PM Epah, eu não sei para que é que tu andas a programar. Definitivamente não é para Android... WEB-INF é uma pasta de um projecto para uma plataforma Web, normalmente utilizando um servidor aplicacional, tipo JBoss, Glassfish, Tomcat,... em Java. Não tem nenhuma relação com o Android. E não, não podes ir buscar um .jar qualquer e adicionar ao Android. A máquina virtual do Android é diferente da JVM. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
apocsantos Posted October 27, 2012 at 11:28 PM Report #480743 Posted October 27, 2012 at 11:28 PM Boa noite, Troca de driver par aceder à base de dados. O Erro que te está a dar é de driver indisponivel, logo precisas de um driver que funcione em Android. Pesquisa por mysql-connector-java-3.0.17-ga-bin.jar, e encontras um driver compativel e que funciona. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
KTachyon Posted October 28, 2012 at 02:38 PM Report #480772 Posted October 28, 2012 at 02:38 PM O driver tinha que ser recompilado para Android. Os jars fornecidos não podem ser utilizados. Para além disso, utilizar uma base de dados desta forma não é seguro. Deves fazer isto com coisas como Web Services ou criar um API via HTTP. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
apocsantos Posted October 28, 2012 at 09:12 PM Report #480817 Posted October 28, 2012 at 09:12 PM Boa noite, O jar que indiquei é compativel com Android 2.1 e superiores. De qualquer forma concordo que não é nem de perto nem de longe a melhor forma. Quando muito aceitaria uma connecção com atravez de uma VPN com IPSEC, mas mesmo isso é desperdicio de recursos. O uso de Webservices ou API's web é preferivel quando não é possivel ter a base de dados localmente. Que conheça não é possivel corrrer o mysql em android mas o sqlite é. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"
KTachyon Posted October 29, 2012 at 01:15 AM Report #480847 Posted October 29, 2012 at 01:15 AM Exacto, não existe MySQL para Android. A Oracle podia portá-lo para Android, mas é uma coisa que não faz sentido. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
PF2G Posted October 30, 2012 at 05:34 PM Author Report #481027 Posted October 30, 2012 at 05:34 PM Eu sinto que estou proximo de conseguir a ligação, ja vi varios sites e todos andam a volta do codigo que tenho e funciona neles, a mim da-me sempre erro agora dá-me na connection: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception could not create connection to database
KTachyon Posted October 30, 2012 at 05:58 PM Report #481032 Posted October 30, 2012 at 05:58 PM Coloca aí o código que tens ou o link para um dos vários sites em que funciona. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now