Android通过Servlet操作MySql数据库

在实现这个功能的时候,那个纠结啊,因为是新手,新接触的Android,然而做这个功能,百度出来的都是坑爹的答案,后来七凑八凑的终于弄出来了,记下来,让后面的同学们能够容易点!!


第一步:配好你的Servlet,里面写好你要连接数据的参数和sql语句

注:这里面引用的2中方法,注释的是常规的运用,利用内置的方法来操作数据库

       而没有注释的方法是通过获取db.properties里面的配置来连接数据库,并且操作sql是利用jdbc来实现的

package com.soft.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.soft.util.DBUtil;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

public class MysqlServlet extends HttpServlet{

	private static final long serialVersionUID = -5963813531253551695L;
	private String username;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			
//			username = new String(req.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
//			try {
//				Class.forName("com.mysql.jdbc.Driver").newInstance();
//				Connection c = DriverManager.getConnection("jdbc:mysql://192.168.11.99:3306/fjtytest?user=lp&password=123456&useUnicode=true&characterEncoding=8859_1");
//				
//				Statement statement = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//				ResultSet result = statement.executeQuery("select tb.name,tb.addr,tb.tel,tb.manager,tb.manager_tel,tb.point_x,tb.point_y,c.CityName,p.DistrictName  from tb_company  tb join tb_city c on tb.city = c.CityID join tb_district p on tb.district = p.DistrictID where tb.id in  (select company_id from tb_account where flag=1 and use_type=1 and check_company_id=3106 )");
//				if(result != null){
//					resp.setContentType("text/html;charset=UTF-8");
//					PrintWriter writer = resp.getWriter();
//					while (result.next()) {
//						writer.print(result.getString("name")+",");
//						writer.print(result.getString("addr")+",");
//						writer.print(result.getString("tel")+",");
//						writer.print(result.getString("manager")+",");	
//						writer.print(result.getString("manager_tel")+",");
//						writer.print(result.getString("point_x")+",");	
//						writer.print(result.getString("point_y")+",");	
//						writer.print(result.getString("CityName")+",");	
//						writer.print(result.getString("DistrictName")+";");	
//					}
//				}else{
//					PrintWriter writer = resp.getWriter();
//					writer.print("查询失败");	
//				}
//			} 
//			catch (InstantiationException e) {
//				e.printStackTrace();
//			}catch (IllegalAccessException e) {
//				e.printStackTrace();
//			}catch (ClassNotFoundException e) {
//				e.printStackTrace();
//			} catch (SQLException e) {
//				e.printStackTrace();
//			}
			String sql = "select tb.name,tb.addr,tb.tel,tb.manager,tb.manager_tel,tb.point_x,tb.point_y,c.CityName,p.DistrictName  from tb_company  tb join tb_city c on tb.city = c.CityID join tb_district p on tb.district = p.DistrictID  where tb.id in  (select company_id from tb_account where flag=1 and use_type=1 and check_company_id=3106 )";
			List<Map> list = DBUtil.query(sql, new Object[]{});
			
			if(list != null ){
				resp.setContentType("text/html;charset=UTF-8");
				PrintWriter writer = resp.getWriter();
				for (Map map : list) {
					writer.print(map.get("name")+",");
					writer.print(map.get("addr")+",");
					writer.print(map.get("tel")+",");
					writer.print(map.get("manager")+",");
					writer.print(map.get("manager_tel")+",");
					writer.print(map.get("point_x")+",");
					writer.print(map.get("point_y")+",");
					writer.print(map.get("CityName")+",");
					writer.print(map.get("DistrictName")+";");	
				}
			}else{
				PrintWriter writer = resp.getWriter();
				writer.print("查询失败");
			}
			
			
			System.out.println(list);
	}

	
}

需要的可以看看这是db.properties的配置,要的同学需要新建一个新文件,记得后缀为properties


# Storage  connection
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.11.99:3306/fjtytest
user=lp
pwd=123456
#url_storage=http://www.mobile-exp.com/storage/stockDetailInterface.htm
#url_storage=http://192.168.1.198:8080/GS_DS_Storage/stockDetailInterface.htm
#backupmoblie_companyid####zhongyou inner ??

至于JDBC的内容就不发布了,应该都能自己实现了,如果要的话可以在评论中说


这边Servlet是配置好了,现在是Android这边需要实现的了

第二步:

url就是你配置的链接数据库的Serlvet的路径,例如:http://192.168.11.135:8081/MySql/pinlunServlet?username =**;这个可以通过传值到Servlet接受

里面的操作方法是我自己需要的,你可以根据你的需求去修改

/*** 
     * 通过Url获取数据 
     */  
    void seach() {
		HttpGet httpGet = new HttpGet(url);
		try {
			HttpResponse response = new DefaultHttpClient().execute(httpGet);
			if(response.getStatusLine().getStatusCode() < 2000){
				result = EntityUtils.toString(response.getEntity());//获取响应的数据
				strings = result.split(";");
			}else{
				Log.e("Err", "链接失败");
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

下面是我的AndroidManifest.xml的配置,仅供参考


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.baudumap"
    android:versionCode="1"
    android:versionName="1.0" >

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="18" >
    </uses-sdk>

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.baudumap" >
    </instrumentation>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_LOGS" >
    </uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/wing"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="android.test.runner" />

        <activity
            android:name="com.example.baudumap.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>
    </application>

</manifest>


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值