android访问远程数据库

今天看到一遍文章,文章罗列了iPhone不具备android系统的十大功能!其实除了功能上的还有其他方面,比如android比iPhone实惠多了,不管你是购机者还是开发者,假如你要开发iPhone那么首先你得花两个月的工资买台apple,还得学习那罕见的语言objective-c,敢问有几学过啊?好了,言归正传,那十大功能其中有一条是,可以用电脑控制android手机!不知道有没有朋友想过:假如我要利用android手机控制电脑又该如何控制呢? 哈哈,若也有此想法的盆友们咱门可以一起讨论讨论啊=="
这几天的苦思冥想,终于冒出了个想法,不知可行否,贴出来与大家分享下,那个该批该评的别客气哈~~
方法:利用android手机修改远程数据库的数据—>电脑里的某个软件不断的从数据库里取数据,然后根据不同的数据作出相应的反应,这样看起来就是android来控制电脑了哈!
那么这里首先有个问题,我们知道现在android还是不支持直接访问远程数据库的,那么我们该如何去访问远程数据库呢? 这也是今天我要和大家分享的啊! 我们可以用下面的方案来实现:
客户端-Tomcat服务器-远程数据库。其中客户端与服务器通过XML文件来交互,服务器与数据库那就是XML与数据库之间的转换啦! 这在我前两篇文章里就是XML与数据库的交换了,不明白的童鞋可以翻出来看看啊! 那么我们要从客户端如何来操纵服务器与数据库的交互呢?我们可以从客户端里调用服务器里的jsp文件,ok,到这相信大家也就基本明白了吧,不明白的再交流。
下面贴出一段数据库转换成XML文件的JSP代码

Js代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. <%@ page import="java.io.*"%>  
  11. <%@ page import="java.sql.*"%>  
  12. <%  
  13. Connection conn;  
  14. Statement stmt;  
  15. ResultSet rs;  
  16. try  
  17.     {  
  18.         File file=new File("sqltoxml.xml");  
  19.         file.createNewFile();  
  20.         FileWriter fw = new FileWriter(file);   
  21.         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
  22.         String URL="jdbc:sqlserver://localhost:1433;databaseName=eZ7IC";  
  23.         String user="sa";  
  24.         String password="zrj";  
  25.         conn = DriverManager.getConnection(URL,user,password);  
  26.         stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
  27.         rs = stmt.executeQuery("select * from ICDM001");  
  28.         fw.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n");  
  29.         fw.write("<eZ7IC>\r\n");  
  30.         while(rs.next())  
  31.         {  
  32.             fw.write("<ICDM001>\r\n");  
  33.             fw.write("<ICDM0a00>");  
  34.             String ICDM0a00 = rs.getString("ICDM0a00");  
  35.             fw.write(ICDM0a00);  
  36.             fw.write("</ICDM0a00>\r\n");  
  37.             fw.write("<ICDM0a01>");  
  38.             String ICDM0a01 = rs.getString("ICDM0a01");  
  39.             fw.write(ICDM0a01);  
  40.             fw.write("</ICDM0a01>\r\n");  
  41.             fw.write("<ICDM0a02>");  
  42.             String ICDM0a02= rs.getString("ICDM0a02");  
  43.             fw.write(ICDM0a02);  
  44.             fw.write("</ICDM0a02>\r\n");  
  45.             fw.write("<ICDM0a03>");     
  46.             String ICDM0a03 = rs.getString("ICDM0a03");  
  47.             if(rs.wasNull())  
  48.                 ICDM0a03 = "NULL";    
  49.             fw.write(ICDM0a03);  
  50.             fw.write("</ICDM0a03>\r\n");  
  51.             fw.write("<ICDM0a04>");  
  52.             String ICDM0a04 = rs.getString("ICDM0a04");  
  53.             fw.write(ICDM0a04);  
  54.             fw.write("</ICDM0a04>\r\n");  
  55.             fw.write("<ICDM0a05>");  
  56.             String ICDM0a05 = rs.getString("ICDM0a05");  
  57.             fw.write(ICDM0a05);  
  58.             fw.write("</ICDM0a05>\r\n");  
  59.             fw.write("<ICDM0a06>");  
  60.             String ICDM0a06 = rs.getString("ICDM0a06");  
  61.             if(rs.wasNull())  
  62.                 ICDM0a06 = "NULL";  
  63.             fw.write(ICDM0a06);  
  64.             fw.write("</ICDM0a06>\r\n");  
  65.             fw.write("</ICDM001>\r\n");  
  66.         }  
  67.         fw.write("</eZ7IC>");  
  68.         fw.close();  
  69.     }catch(Exception e){  
  70.         e.printStackTrace();  
  71.     }  
  72. %>   
  73. </body>  
  74. </html>  

 

是不是似曾相识啊? 对的,就是前一篇的代码转换为JSP代码而已!XML文件数据写进数据库的JSP代码也就不多说,仿照上面的就可以了!
然后在android里我们利用WebView来调用JSP文件,简单代码如下:

Java代码   收藏代码
  1. package zrj.sqlxmljsp;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.webkit.WebView;  
  8. import android.widget.Button;  
  9.   
  10. public class SQLXMLJSP extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     private Button RButton,WButton;  
  13.     private WebView WebView1;  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.         RButton = (Button)findViewById(R.id.button1);  
  19.         WButton = (Button)findViewById(R.id.button2);  
  20.         RButton.setOnClickListener(new RButtonListener());  
  21.         WButton.setOnClickListener(new WButtonListener());   
  22.         WebView1 = (WebView)findViewById(R.id.WebView1);  
  23.     }  
  24.     class RButtonListener implements OnClickListener  //从数据库读取数据 创建XML文件  
  25.     {  
  26.         @Override  
  27.         public void onClick(View v) {  
  28.             try{  
  29.                 String actionuri="http://192.168.0.126:8888/sqlandxml/WebContent/test1.jsp";    
  30.                 WebView1.loadUrl(actionuri);  
  31.             }  
  32.             catch(Exception e){  
  33.                 e.printStackTrace();  
  34.             }  
  35.         }  
  36.     }  
  37.     class WButtonListener implements OnClickListener  //插入数据  
  38.     {  
  39.         @Override  
  40.         public void onClick(View v)  
  41.         {  
  42.             try{  
  43.                 String actionuri="http://192.168.0.126:8888/sqlandxml/WebContent/test2.jsp";  
  44.                 WebView1.loadUrl(actionuri);  
  45.             }catch(Exception e){  
  46.                 e.printStackTrace();  
  47.             }  
  48.         }  
  49.     }  
  50.           
  51. }  

 

ok,完成上面的工作,咱们就实现了android访问远程数据库了!

你可能感兴趣的:(数据库,jsp,android,xml,服务器,sqlserver)