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,欢迎一起讨论

  • 1
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

weixin_39917437

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值