android连接电脑mysql_android直接访问电脑里面的mysql
关于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相关推荐
- php里面的MySql
php里面的MySql SQL 是一种标准 - 但是... SQL是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL语句用于取回和更新数据库中的数据.SQL可与数据库程序协同工作,比 ...
- html5如何访问电脑文件夹,手机如何直接访问电脑文件?手机访问电脑文件
通过手机QQ也可以访问电脑文件.有时我们并不想一直盯着电脑,但是又需要查看电脑里的文件.有没有一种方法可以做到,不盯着电脑也能查看电脑上的文件呢?下面给大家介绍一下如何用手机访问电脑文件. 1.在手机 ...
- android id 重名_android 中Xml里面的id重名问题
今天在做项目的时候,居然发现@+id 居然可以重名,而且 情况一:同个一个Xml文件中的同名 在同个一个Xml文件的中若同名了,则前一个有效,而后一个无效,即后一个Null掉.如: android:i ...
- 手机app连接远程mysql_Android手机app 链接服务器的mysql 读取数据库
展开全部 手机是不bai能直接去连接你服务器的dumysql数据库 请在你的服zhi务端写dao代码去连接专mysql数据属吧 Mysql连接方法 1. 加载数据库驱动: Class.forName( ...
- phpStudy里面的MySQL启动不了,本地之前安装过MySQL
楼主在网上找了一个php项目,想在本地运行一下看效果,看网上说phpstudy比较简单,就直接用的它,可是在进行到启动MySQL的这一步,死活启动不了 于是在网上找了一大堆解决方案,总结:端口被占用, ...
- 手机访问电脑文件_你还在苦恼电脑和手机文件如何快速传输吗?
对于很多商务人士来说,如何方便地在手机或PAD等移动设备上查看电脑上的文件,很多时候都显得那么重要. 目前,一般的解决方案有如下几种: 1.各类网盘:现在网盘的种类有很多,用得最多的,恐怕就是某度云了 ...
- 关于 android 里面的 AndroidX 和 annotation 冲突的解决方式
这里我使用的是Android Studio 之前项目接入的SDK 都没有依赖AndroidX 最近接入了一个SDK 必须依赖AndroidX后就发现各种报错了 其中一个就是 程序包 android.s ...
- 怎么卸载计算机服务里面的,联想电脑的联想服务软件可以卸载吗 怎么卸载
联想电脑默认会自带"联想服务"这个软件,联想服务软件可以帮助用户解决使用过程中出现的各种问题,非常实用的工具,但是有些用户就是不想要,想要卸载,那么联想自带的联想服务能不能卸载呢? ...
- 如何允许计算机远程桌面连接,远程桌面 - 允许访问你的电脑
远程桌面 - 允许访问你的电脑 06/05/2018 本文内容 适用于:Windows 10.Windows 8.1.Windows Server 2019.Windows Server 2016.W ...
最新文章
- 计算机组装与维修单元卷,计算机组装与维修期中考试试卷及答案
- 追踪解析Spring ioc启动源码(2)
- 二级分类_iOS 13.3正式版,增加信息联系人二级分类,支持联通VoLTE功能
- Leaflet中使用NavBar插件实现导航(前进后退)效果
- JAVA-WBE——spring security 3.2 认证-学习笔记2
- linux 卸载kde,Ubuntu KDE终端系统安装与卸载
- Django内置的用户认证
- chrome开发者工具各种骚技巧
- 终于有人把安卓程序员必学知识点全整理出来了,送大厂面经一份!
- php7 关联nginx,nginx+php7配合开发
- 智能+大数据 在云+互联时代下创造的精准营销
- tshark过滤并保存包特定字段
- wincc新手之路-安装与授权
- 淘宝开源项目TbSchedule的部署和使用
- zynq pl 发数据给 ps
- VMware 苹果虚拟机 Xcode真机调试失败 设备不信任该机器
- FocalLoss解析
- 马云推出的“天猫精灵”到底有多牛? 细思极恐怖
- 从零实施ERP如何成功
- 1-编程基础及Python环境部署
热门文章
- 2企业网络联通性保障
- H5_Study_Day3_新特性(3)
- PYTHON代码审查工具
- 多线程练习题(12A34B......)(ABAB......)(ABCABA......)
- CCS计算机科学导论 02电子计算机Electronic Computing
- 华为js面试题_华为C语言面试题最优思路及答案分享
- 网络安全进阶篇之流量加密(十三章-2)MSF流量加密躲避检测
- LNMP架构以及Discuz论坛搭建
- 摄像头视频采集压缩及传输 1
- Openlayers案例1——加载OSM地图