/************************************************************
声明:如需转载,请注明出处!
************************************************************/
本篇博客基于 http://blog.csdn.net/androidbluetooth/article/details/7716175
在上篇博客里面,介绍了jdbc 的远程连接操作,并且成功了。
点击这里,查看细节。
那么,我们是否可以将这种操作移植到 android 上面?
答案是肯定的,不信你往下看。
程序效果图
项目结构
项目文件中新建 libs 目录,将 jdbc 的 jar 文件放到里面。
这样 adt 插件自动将该 jar 添加到 build path.
数据库表里面的原始数据
插入数据
删除数据
更新数据
Main.java
package mark.zhang;
import java.sql.Connection;
import java.sql.SQLException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class Main extends Activity {
private static final String REMOTE_IP = "192.168.1.102";
private static final String URL = "jdbc:mysql://" + REMOTE_IP + "/mydb";
private static final String USER = "mark";
private static final String PASSWORD = "123456";
private Connection conn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onConn(View view) {
conn = Util.openConnection(URL, USER, PASSWORD);
}
public void onInsert(View view) {
String sql = "insert into mytable values(9, 'hanmeimei')";
Util.execSQL(conn, sql);
}
public void onDelete(View view) {
String sql = "delete from mytable where name='mark'";
Util.execSQL(conn, sql);
}
public void onUpdate(View view) {
String sql = "update mytable set name='lilei' where name='hanmeimei'";
Util.execSQL(conn, sql);
}
public void onQuery(View view) {
System.out.println("All users info:");
Util.query(conn, "select * from mytable");
}
@Override
protected void onDestroy() {
super.onDestroy();
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
conn = null;
} finally {
conn = null;
}
}
}
}
Util.java
package mark.zhang;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Util {
public static Connection openConnection(String url, String user,
String password) {
Connection conn = null;
try {
final String DRIVER_NAME = "com.mysql.jdbc.Driver";
Class.forName(DRIVER_NAME);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
conn = null;
} catch (SQLException e) {
conn = null;
}
return conn;
}
public static void query(Connection conn, String sql) {
if (conn == null) {
return;
}
Statement statement = null;
ResultSet result = null;
try {
statement = conn.createStatement();
result = statement.executeQuery(sql);
if (result != null && result.first()) {
int idColumnIndex = result.findColumn("id");
int nameColumnIndex = result.findColumn("name");
System.out.println("id\t\t" + "name");
while (!result.isAfterLast()) {
System.out.print(result.getString(idColumnIndex) + "\t\t");
System.out.println(result.getString(nameColumnIndex));
result.next();
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (result != null) {
result.close();
result = null;
}
if (statement != null) {
statement.close();
statement = null;
}
} catch (SQLException sqle) {
}
}
}
public static boolean execSQL(Connection conn, String sql) {
boolean execResult = false;
if (conn == null) {
return execResult;
}
Statement statement = null;
try {
statement = conn.createStatement();
if (statement != null) {
execResult = statement.execute(sql);
}
} catch (SQLException e) {
execResult = false;
}
return execResult;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:onClick="onConn"
android:text="connect mysql" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:onClick="onInsert"
android:text="insert data" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:onClick="onDelete"
android:text="delete data" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:onClick="onUpdate"
android:text="update data" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onQuery"
android:text="query data" />
</LinearLayout>
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mark.zhang"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
注意:
<uses-permission android:name="android.permission.INTERNET"/>
-----------------------------------------------------------------------------
2016.7.28 更新
-----------------------------------------------------------------------------
首先非常感谢@lyz12600对工程的整理.
大家可以去下载 AndroidStudio 的代码, 运行, 有问题多交流.
下载地址:http://download.csdn.net/detail/lyz12600/9581532
再次感谢@lyz12600.
扫一扫关注一下我的公众号