关于android访问mysql,网上有很多大神写过文章,有很多种方法可以实现。大致实现的思路主要有两种:1、直接访问,在android工程中用jdbc直接连2、间接访问。在电脑端配置一个服务器,采用android——服务器——mysql这种形式。其中,第二种方式又可以用多种方式实现,比如android通过socket访问服务器,服务器再访问mysql,等等。本文就是用的第一种方法,关于网上很多人说用第一种方法不安全,容易被别人反编译,获取账号信息,我让账号信息全部实现手动输入,应该不存在安全问题。

准备工作:在写android工程前,首先要让电脑里的mysql准许远程访问,并且新建一个mysql账户(默认账户为root,属于管理员的,一般不采用),用于登陆数据库。其次,在数据库中新建数据库,新建表。最后下载jdbc驱动。

开始工作:

1、新建一个android工程,然后把驱动放进去,至于怎么放,可以百度,就不再仔细说了

2、工程中有两个类,mainactivity.java ,returnvalue.java

(1)、package com.android_mysql;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

public class MainActivity extends Activity {

private EditText edi1;

private EditText edi2;

private EditText edi3;

private EditText edi4;

private EditText edi5;

private EditText edi6;

private Button but1;

private TextView txt1;

private Intent intent;

public static String result = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

edi1 = (EditText) findViewById(R.id.editText1);

edi2 = (EditText) findViewById(R.id.editText2);

edi3 = (EditText) findViewById(R.id.editText3);

edi4 = (EditText) findViewById(R.id.editText4);

edi5 = (EditText) findViewById(R.id.editText5);

edi6 = (EditText) findViewById(R.id.editText6);

but1 = (Button) findViewById(R.id.button1);

txt1 = (TextView) findViewById(R.id.textView1);

but1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO 自动生成的方法存根

String ip = edi1.getText().toString();

String port = edi2.getText().toString();

String data = edi3.getText().toString();

String user = edi4.getText().toString();

String password = edi5.getText().toString();

String sql = edi6.getText().toString();

// 是否为空?

if (ip.equals("") || port.equals("") || data.equals("")

|| user.equals("") || sql.equals("")

|| password.equals("")) {

txt1.setText("请将信息填写完整后提交!");

} else {

String driver = "com.mysql.jdbc.Driver";

String url = "jdbc:mysql://" + ip + ":" + port + "/" + data;

try {

// 加载驱动程序

Class.forName(driver);

// 连续数据库

Connection conn = DriverManager.getConnection(url,

user, password);

if (!conn.isClosed())

System.out

.println("Succeeded connecting to the Database!");

// statement用来执行SQL语句

Statement statement = conn.createStatement(

ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

// 结果集

ResultSet rs = statement.executeQuery(sql);

ResultSetMetaData rsmd = rs.getMetaData();

int columnCount = rsmd.getColumnCount();

for (int i = 0; i < columnCount; i++)

result = result + rsmd.getColumnName(i + 1) + "\t";

result = result + "\n";

while (rs.next()) {

for (int i = 1; i <= columnCount; i++)

result = result + rs.getString(i) + "\t";

result = result + "\n";

}

rs.close();

conn.close();

intent = new Intent(MainActivity.this,

ReturnValue.class);

startActivity(intent);

} catch (ClassNotFoundException e) {

System.out.println("Sorry,can`t find the Driver!");

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

(2)、package com.android_mysql;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

public class ReturnValue extends Activity{

private EditText edi1;

private Button but1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.returnvalue);

edi1 = (EditText)findViewById(R.id.editText7);

but1 = (Button)findViewById(R.id.button2);

edi1.setText(MainActivity.result);

but1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MainActivity.result="";

ReturnValue.this.finish();

}

});

}

}

(3)、main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:id="@+id/editText1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="5dp"

android:layout_marginLeft="5dp"

android:layout_marginRight="5dp"

android:layout_marginTop="30dp"

android:ems="10"

android:hint="Mysql服务器地址" />

android:id="@+id/editText2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/editText3"

android:layout_below="@+id/editText1"

android:layout_margin="5dp"

android:layout_marginTop="14dp"

android:ems="10"

android:hint="端口号" >

android:id="@+id/editText3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/editText2"

android:layout_margin="5dp"

android:ems="10"

android:hint="数据库名" />

android:id="@+id/editText4"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@+id/editText3"

android:layout_margin="5dp"

android:ems="10"

android:hint="用户名" />

android:id="@+id/editText5"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/editText4"

android:layout_margin="5dp"

android:ems="10"

android:hint="密码" />

android:id="@+id/editText6"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/editText5"

android:layout_marginBottom="12dp"

android:ems="10"

android:gravity="top"

android:hint="SQL语句"

android:minLines="5"

android:text="select * from courierinfo ;" />

android:id="@+id/textView1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/button1"

android:layout_alignParentLeft="true"

android:layout_below="@id/editText6"

android:layout_margin="5dp"

android:gravity="center" />

android:id="@+id/button1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_marginBottom="17dp"

android:text="提    交"

android:textSize="30sp" />

(4)、returnvalue.xml

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/editText7"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_marginBottom="5dp"

android:layout_marginLeft="5dp"

android:layout_marginRight="5dp"

android:layout_marginTop="30dp"

android:ems="10"

android:gravity="top"

android:minLines="10"

android:textSize="13sp" >

android:id="@+id/button2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@+id/editText7"

android:layout_marginLeft="5dp"

android:layout_marginRight="5dp"

android:layout_marginTop="32dp"

android:text="返    回"

android:textSize="30sp" />

3、最后,在程序清单中要添加

OK了,大功告成,真机测试完美运行,真机测试时,要把手机连在和电脑同一个网段中。最后,想要源码的Call我,qq:540886047,欢迎一起讨论

android连接电脑mysql_android直接访问电脑里面的mysql相关推荐

  1. php里面的MySql

    php里面的MySql SQL 是一种标准 - 但是... SQL是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL语句用于取回和更新数据库中的数据.SQL可与数据库程序协同工作,比 ...

  2. html5如何访问电脑文件夹,手机如何直接访问电脑文件?手机访问电脑文件

    通过手机QQ也可以访问电脑文件.有时我们并不想一直盯着电脑,但是又需要查看电脑里的文件.有没有一种方法可以做到,不盯着电脑也能查看电脑上的文件呢?下面给大家介绍一下如何用手机访问电脑文件. 1.在手机 ...

  3. android id 重名_android 中Xml里面的id重名问题

    今天在做项目的时候,居然发现@+id 居然可以重名,而且 情况一:同个一个Xml文件中的同名 在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉.如: android:i ...

  4. 手机app连接远程mysql_Android手机app 链接服务器的mysql 读取数据库

    展开全部 手机是不bai能直接去连接你服务器的dumysql数据库 请在你的服zhi务端写dao代码去连接专mysql数据属吧 Mysql连接方法 1. 加载数据库驱动: Class.forName( ...

  5. phpStudy里面的MySQL启动不了,本地之前安装过MySQL

    楼主在网上找了一个php项目,想在本地运行一下看效果,看网上说phpstudy比较简单,就直接用的它,可是在进行到启动MySQL的这一步,死活启动不了 于是在网上找了一大堆解决方案,总结:端口被占用, ...

  6. 手机访问电脑文件_你还在苦恼电脑和手机文件如何快速传输吗?

    对于很多商务人士来说,如何方便地在手机或PAD等移动设备上查看电脑上的文件,很多时候都显得那么重要. 目前,一般的解决方案有如下几种: 1.各类网盘:现在网盘的种类有很多,用得最多的,恐怕就是某度云了 ...

  7. 关于 android 里面的 AndroidX 和 annotation 冲突的解决方式

    这里我使用的是Android Studio 之前项目接入的SDK 都没有依赖AndroidX 最近接入了一个SDK 必须依赖AndroidX后就发现各种报错了 其中一个就是 程序包 android.s ...

  8. 怎么卸载计算机服务里面的,联想电脑的联想服务软件可以卸载吗 怎么卸载

    联想电脑默认会自带"联想服务"这个软件,联想服务软件可以帮助用户解决使用过程中出现的各种问题,非常实用的工具,但是有些用户就是不想要,想要卸载,那么联想自带的联想服务能不能卸载呢? ...

  9. 如何允许计算机远程桌面连接,远程桌面 - 允许访问你的电脑

    远程桌面 - 允许访问你的电脑 06/05/2018 本文内容 适用于:Windows 10.Windows 8.1.Windows Server 2019.Windows Server 2016.W ...

最新文章

  1. 计算机组装与维修单元卷,计算机组装与维修期中考试试卷及答案
  2. 追踪解析Spring ioc启动源码(2)
  3. 二级分类_iOS 13.3正式版,增加信息联系人二级分类,支持联通VoLTE功能
  4. Leaflet中使用NavBar插件实现导航(前进后退)效果
  5. JAVA-WBE——spring security 3.2 认证-学习笔记2
  6. linux 卸载kde,Ubuntu KDE终端系统安装与卸载
  7. Django内置的用户认证
  8. chrome开发者工具各种骚技巧
  9. 终于有人把安卓程序员必学知识点全整理出来了,送大厂面经一份!
  10. php7 关联nginx,nginx+php7配合开发
  11. 智能+大数据 在云+互联时代下创造的精准营销
  12. tshark过滤并保存包特定字段
  13. wincc新手之路-安装与授权
  14. 淘宝开源项目TbSchedule的部署和使用
  15. zynq pl 发数据给 ps
  16. VMware 苹果虚拟机 Xcode真机调试失败 设备不信任该机器
  17. FocalLoss解析
  18. 马云推出的“天猫精灵”到底有多牛? 细思极恐怖
  19. 从零实施ERP如何成功
  20. 1-编程基础及Python环境部署

热门文章

  1. 2企业网络联通性保障
  2. H5_Study_Day3_新特性(3)
  3. PYTHON代码审查工具
  4. 多线程练习题(12A34B......)(ABAB......)(ABCABA......)
  5. CCS计算机科学导论 02电子计算机Electronic Computing
  6. 华为js面试题_华为C语言面试题最优思路及答案分享
  7. 网络安全进阶篇之流量加密(十三章-2)MSF流量加密躲避检测
  8. LNMP架构以及Discuz论坛搭建
  9. 摄像头视频采集压缩及传输 1
  10. Openlayers案例1——加载OSM地图