Estabelecendo conexão com o banco de dados em dispositivos móveis

Veja como é simples trabalhar com banco de dados em dispositivos móveis.

O Framework CLDC, não suporta APIs JDBC. Dessa forma, para conectar um bancos de dados a dispositivos que têm configuração CLDC, você precisa chamar um Servlet de MIDLets. A Conexão com o banco de dados, executa as queries, e outras funcionalidades precisam ser implementadas no Servlet.

O exemplo abaixo pega o nome do banco de dados, nome de usuário e senha do MIDlet que executa no dispositivo J2ME e passa isto para o Servlet. O estado de conexão é passado para o MIDlet:

import java.io.*; import java.util.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.io.*; public class testMySQL extends MIDlet implements CommandListener { private String username; private String url = "http://localhost:8080/servlets-examples/servlet/getConnection"; private Display display; private Command exit = new Command("EXIT", Command.EXIT, 1);; private Command connect = new Command("Connect", Command.SCREEN, 1); private TextField tb; private Form menu; private TextField tb1; private TextField tb2; DB db; public testMySQL() throws Exception { display = Display.getDisplay(this); } public void startApp() { displayMenu(); } public void displayMenu() { menu = new Form("Conexao"); tb = new TextField("Informe o banco de dados: ","",30, TextField.ANY ); tb1 = new TextField("Informe o nome de usuario: ","",30, TextField.ANY); tb2 = new TextField("Informe a senha: ","",30, TextField.PASSWORD); menu.append(tb); menu.append(tb1); menu.append(tb2); menu.addCommand(exit); menu.addCommand(connect); menu.setCommandListener(this); display.setCurrent(menu); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} public void commandAction(Command command, Displayable screen) { if (command == exit) { destroyApp(false); notifyDestroyed(); } else if (command == connect) { db = new DB(this); db.start(); db.connectDb(tb.getString(),tb1.getString(),tb2.getString()); } } public class DB implements Runnable { testMySQL midlet; private Display display; String db; String user; String pwd; public DB(testMySQL midlet) { this.midlet = midlet; display = Display.getDisplay(midlet); } public void start() { Thread t = new Thread(this); t.start(); } public void run() { StringBuffer sb = new StringBuffer(); try { HttpConnection c = (HttpConnection) Connector.open(url); c.setRequestProperty( "User-Agent","Profile/MIDP-1.0, Configuration/CLDC-1.0"); c.setRequestProperty("Content-Language","en-US"); c.setRequestMethod(HttpConnection.POST); DataOutputStream os = (DataOutputStream)c.openDataOutputStream(); os.writeUTF(db.trim()); os.writeUTF(user.trim()); os.writeUTF(pwd.trim()); os.flush(); os.close(); // Obtenha a resposta da servlet page. DataInputStream is =(DataInputStream)c.openDataInputStream(); //is = c.openInputStream(); int ch; sb = new StringBuffer(); while ((ch = is.read()) != -1) { sb.append((char)ch); } showAlert(sb.toString()); is.close(); c.close(); } catch (Exception e) { showAlert(e.getMessage()); } } /* Este método leva os dados de usuário como db,usuario e senha e passa para o servlet */ public void connectDb(String db,String user,String pwd) { this.db = db; this.user = user; this.pwd = pwd; } /* Mostra um erro na tela*/ private void showAlert(String err) { Alert a = new Alert("mensagem de erro"); a.setString(err); a.setTimeout(Alert.FOREVER); display.setCurrent(a); } }; }
import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class getConnection extends HttpServlet { public void init() { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DataInputStream in = new DataInputStream( (InputStream)request.getInputStream()); String db = in.readUTF(); String user = in.readUTF(); String pwd = in.readUTF(); String message ="jdbc:mysql://localhost:3306/"+db+","+user+","+pwd; try { connect(db.toLowerCase().trim(),user.toLowerCase().trim(), pwd.toLowerCase().trim()); message += "100 ok"; } catch (Throwable t) { message += "200 " + t.toString(); } response.setContentType("text/plain"); response.setContentLength(message.length()); PrintWriter out = response.getWriter(); out.println(message); in.close(); out.close(); out.flush(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /* Este método faz conexão com o MYSQL*/ private void connect(String db, String user,String pwd) throws Exception { //Estabelece conexão JDBC com MYSQL. //Class.forName("org.gjt.mm.mysql.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/"+db,user,pwd); //Estabelece conexão JDBC com Oracle //DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); //Connection conn = DriverManager.getConnection( // "jdbc:oracle:thin:@localhost:1521:"+db,user,pwd); //Estabelece conexão JDBC com o SQL. //Class.forName("net.sourceforge.jtds.jdbc.Driver"); //Connection conn = DriverManager.getConnection( // "jdbc:jtds:sqlserver://localhost:1433/"+db,user,pwd); } }
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados