----------------------------------------------------------------------------------------------------

需求:Android客户端连接服务器端mysql数据库中的内容

环境部署

服务器:apache-tomcat-8.5.9

语言版本:Java 1.8.0_101

编译环境:Eclipse

Android Studio

调用jar包:httpclient-4.2.5,httpcore-4.2.4 //HttpClient父类

mysql-connector-java-5.1.40-bin //用于连接mysql数据库

思路:涉及到服务器端mysql数据库安装、web应用部分开发和Android客户端开发三个部分

步骤:

1、mysql数据库安装

a、先安装mysql-installer-community-5.7.17.0,其中在Setup Type上选择“Server only”,然后记住数据库端口号和账号(例如:root)密码(例如:123456),如下图:

Android Studio 远端服务器 android studio连接服务器数据库_mysql

Android Studio 远端服务器 android studio连接服务器数据库_mysql_02

b、安装成功验证。命令行窗口输入密码,然后输入显示所有数据库命令:show databases; 一定要有分号,并按回车。

Android Studio 远端服务器 android studio连接服务器数据库_mysql_03

Android Studio 远端服务器 android studio连接服务器数据库_java_04

c、NavicatforMySQL下载及使用。注册,然后连接数据库,输入密码后,能够看到已存在的数据库,可以在其中进行相关数据库和数据表的创建操作。

Android Studio 远端服务器 android studio连接服务器数据库_mysql_05

Android Studio 远端服务器 android studio连接服务器数据库_安卓连接服务器数据库mysql数据库_06

(具体以参考资料中的内容为主)

2、web应用部分开发

a、新建servlet,并且配置好web.xml中的相应信息(在WebContent下的WEB-INF文件夹下加入web.xml文件来连接servlet与jsp前端),此外还需在libs中添加mysql-connector-java-5.1.37-bin.jar文件,代码如下:

1 packagecom.Servlet;2

3 importjava.io.IOException;4 importjavax.servlet.ServletException;5 importjavax.servlet.annotation.WebServlet;6 importjavax.servlet.http.HttpServlet;7 importjavax.servlet.http.HttpServletRequest;8 importjavax.servlet.http.HttpServletResponse;9

10 importjava.io.PrintWriter;11 importjava.sql.Connection;12 importjava.sql.ResultSet;13 importjava.sql.Statement;14 importcom.DBTool.DBUtil;15

16 @WebServlet("/Servlet")17 public class Login extendsHttpServlet {18 private static final long serialVersionUID = 1L;19

20 /**

21 *@seeHttpServlet#HttpServlet()22 */

23 publicLogin() {24 super();25 //TODO Auto-generated constructor stub

26 }27 /**

28 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)29 */

30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {31 //TODO Auto-generated method stub

32 response.getWriter().append("Served at: ").append(request.getContextPath());33 }34

35 /**

36 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)37 */

38 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {39 String ID = request.getParameter("ID");40 String PW= request.getParameter("PW");41 boolean type=false;42 response.setContentType("text/html; charset=UTF-8");43 PrintWriter out =response.getWriter();44 try

45 {46 Connection con=DBUtil.getConnection();47 Statement stmt=con.createStatement();48 //mysql数据库中的数据表,表名叫:demotable ,需要自己预先在数据库中进行创建,包含相应的字段和记录。

49 String sql="select * from mysql.demotable where uid="+ID+" and pwd="+PW;50 ResultSet rs=stmt.executeQuery(sql);51 while(rs.next())52 {53 type=true;54 }55 }56 catch(Exception ex)57 {58 ex.printStackTrace();59 }60 finally

61 {62 DBUtil.Close();63 out.print(type);64 out.flush();65 out.close();66 }67 }68

69 }

web.xml内容如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 
3 web
4 
5 Login
6 Login
7 com.Servlet.Login
8 
9 
10 Login
11 /Login
12 
13 
14 index.html
15 index.jsp
16 
17

b、前端界面设计(TestPage.jsp)如下:

Insert title here

用户名

密码

c、在java Resources下的src文件夹中新建com.DBTool包,用作数据池来连接数据库,在包中建立DBUtil类实现功能,代码如下:

1 packagecom.DBTool;2

3

4 import java.sql.*;5

6 public classDBUtil {7 //其中mysql是数据库名称,在mysql57版本的数据库中已经预先新建完成;3306是mysql数据库的端口号。

8 private static String url="jdbc:mysql://localhost:3306/mysql";9 //com.mysql.jdbc.Driver是mysql-connector-java-5.1.40中的驱动包路径

10 private static String driverClass="com.mysql.jdbc.Driver";11 //mysql的账号和密码是在安装mysql中进行设置的,这里拿来用即可。

12 private static String username="root";13 private static String password="123456";14 private staticConnection conn;15 //装载驱动

16 static{17 try{18 Class.forName(driverClass);19 }20 catch(ClassNotFoundException e){21 e.printStackTrace();22 }23 }24 //获取数据库连接

25 public staticConnection getConnection(){26 try{27 conn=DriverManager.getConnection(url,username,password);28 }29 catch(SQLException e){30 e.printStackTrace();31 }32 returnconn;33 }34 //建立数据库连接

35 public static voidmain(String[] args){36 Connection conn=DBUtil.getConnection();37 if(conn!=null){38 System.out.println("数据库连接成功");39 }40 else{41 System.out.println("数据库连接失败");42 }43 }44 //关闭数据库连接

45 public static voidClose(){46 if(conn!=null){47 try{48 conn.close();49 }50 catch(SQLException e){51 e.printStackTrace();52 }53 }54 }55 }

d、运行服务器,测试是否成功搭建。

Android Studio 远端服务器 android studio连接服务器数据库_安卓连接服务器数据库mysql数据库_07

Android Studio 远端服务器 android studio连接服务器数据库_安卓连接服务器数据库mysql数据库_08

3、Android部分开发

仅附上核心部分代码,如下:

1 public void SendByHttpClient(final String id, finalString pw){2 new Thread(newRunnable() {3 @Override4 public voidrun() {5 try{6 HttpClient httpclient=newDefaultHttpClient();7 HttpPost httpPost=new HttpPost("http://web应用部署服务器上的IP地址:8080/HttpClientDemo/Login");//服务器地址,指向Servlet

8 List params=new ArrayList();//将id和pw装入list

9 params.add(new BasicNameValuePair("ID",id));10 params.add(new BasicNameValuePair("PW",pw));11 final UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8");//以UTF-8格式发送

12 httpPost.setEntity(entity);13 HttpResponse httpResponse=httpclient.execute(httpPost);14 if(httpResponse.getStatusLine().getStatusCode()==200)//在200毫秒之内接收到返回值

15 {16 HttpEntity entity1=httpResponse.getEntity();17 String response=EntityUtils.toString(entity1, "utf-8");//以UTF-8格式解析

18 Message message=newMessage();19 message.what=USER_LOGIN;20 message.obj=response;21 handler.sendMessage(message);使用Message传递消息给线程22 }23 }24 catch(Exception e) {25 e.printStackTrace();26 }27 }28 }).start();29 }

最终,测试结果图,如下:

Android Studio 远端服务器 android studio连接服务器数据库_mysql_09

-------------------------------------------------------------------------------------------