android jdbc直接连mysql数据库_一个简单的Android通过jdbc直接连接mysql数据库的小例子...

代码如下:

package com.example.machine.gasmonitoring;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class SQLActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sql);

new Thread(runnable).start();

}

Handler myHandler = new Handler(){

public void handleMessage(Message msg){

super.handleMessage(msg);

Bundle data = new Bundle();

data=msg.getData();

System.out.println("username" + data.get("username").toString());

System.out.println("userpass" + data.get("userpass").toString());

}

};

Runnable runnable = new Runnable() {

private Connection connection = null;

@Override

public void run() {

try {

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection("jdbc:mysql://IPAddress:3306/Databasename", "username", "youpass");

System.out.print("连接成功");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e1) {

e1.printStackTrace();

}

try {

test(connection); //测试数据库连接

} catch (java.sql.SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void test(Connection con1) throws java.sql.SQLException {

try {

String sql = "select * from user"; //查询表名为“user”的所有内容

Statement stmt = con1.createStatement(); //创建Statement

ResultSet rs = stmt.executeQuery(sql); //ResultSet类似Cursor

//ResultSet最初指向第一行

Bundle bundle = new Bundle();

while (rs.next()) {

bundle.clear();

bundle.putString("username", rs.getString("username"));

bundle.putString("userpass", rs.getString("userpass"));

Message msg = new Message();

msg.setData(bundle);

myHandler.sendMessage(msg);

}

rs.close();

stmt.close();

} catch (SQLException e) {

} finally {

if (con1 != null)

try {

con1.close();

} catch (SQLException e) {

}

}

}

};

};

这是一个简单的Android通过jdbc直接连接数据库的例子,代码中的IPAddress指你的ip地址,Databasename指的是你的数据库的名字,不是表的名字,指数据库的名字,username和yourpass分别是你的数据库用户名和密码。

这个例子中我主要是做了一个直接查询的功能,查询了user表中的两列数据,打印到控制台,大家也可以自己再深入研究添加其他功能。

需要注意的是,在使用jdbc连接数据库的时候肯定是要使用连数据的jar的包,我用的是android studio开发的,所以架包直接放在libs文件夹下面:

f636e58498980f0e744e54fe1619ee12.png

另外在使用IP地址的时候使用127.0.0.1的时候可能会报错

14f09382e0d2fffca3a5adb251035bcc.png

显示这样的错误,意思是尝试调用sql接口的时候出现了空指针异常,具体原因还没分析,所以我用的ip地址是自己服务器的ip地址,是公网。

还有一点是在AndroidManifest.xml文件中要添加可访问网络的权限

之后才可以运行。

这个本地ip不能用的问题等研究之后再贴。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是关于使用 JDBC 直接操作 MySQL 数据库进行 PreparedStatement 的插入操作。下面是示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class InsertExample { public static void main(String[] args) { // 数据库连接信息 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; // SQL 语句 String sql = "INSERT INTO user (name, age) VALUES (?, ?)"; try ( // 获取数据库连接 Connection conn = DriverManager.getConnection(url, user, password); // 创建 PreparedStatement 对象 PreparedStatement pstmt = conn.prepareStatement(sql); ) { // 设置参数 pstmt.setString(1, "张三"); pstmt.setInt(2, 20); // 执行 SQL 语句 int rows = pstmt.executeUpdate(); // 输出结果 System.out.println("插入了 " + rows + " 行数据"); } catch (SQLException e) { e.printStackTrace(); } } } ``` 上述示例代码中,我们首先定义了数据库连接信息和插入操作的 SQL 语句。然后,我们通过 DriverManager.getConnection() 方法获取数据库连接,再使用 conn.prepareStatement() 方法创建 PreparedStatement 对象。接下来,我们使用 pstmt.setString() 和 pstmt.setInt() 方法设置 SQL 语句中的占位符参数。最后,我们使用 pstmt.executeUpdate() 方法执行 SQL 语句,并输出插入的行数。 注意,在使用 PreparedStatement 时,我们可以通过占位符 ? 来指定参数,这样可以避免 SQL 注入攻击。另外,PreparedStatement 对象在执行 SQL 语句时可以重复利用,可以提高数据库操作的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值