在Android中连接MySQL数据库

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、成都外贸网站建设公司、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的汉南网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
在移动应用开发中,我们常常需要从服务器获取数据或者将数据存储到服务器,MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了一种高效、稳定和安全的存储和检索数据的方式,了解如何在Android应用中连接MySQL数据库是非常有用的。
1. 为什么我们需要在Android中连接MySQL数据库?
在Android应用中,我们可能需要从服务器获取或存储大量的数据,例如用户的个人信息、应用设置、游戏得分等,这些数据通常存储在服务器的数据库中,而MySQL是最常用的数据库之一,通过连接MySQL数据库,我们可以方便地读取和修改这些数据。
2. Android如何连接MySQL数据库?
要在Android中连接MySQL数据库,我们需要使用Java语言和JDBC(Java Database Connectivity)技术,以下是一个简单的步骤:
步骤一:创建MySQL数据库
你需要在MySQL服务器上创建一个数据库,你可以使用MySQL的命令行工具或者图形界面工具来创建数据库。
步骤二:创建表
在你的数据库中创建一个表来存储你的数据,你可以使用SQL语句来创建表,
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
步骤三:在Android中连接到MySQL数据库
接下来,我们在Android应用中连接到MySQL数据库,这需要使用JDBC API和Android的网络API,以下是一个示例代码:
import java.sql.*;
import android.os.AsyncTask;
import android.widget.TextView;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.ServerSocket;
import java.util.Properties;
import javax.net.ssl.SSLSocketFactory;
public class MainActivity extends AppCompatActivity {
private TextView textView;
private static final String DB_URL = "jdbc:mysql://localhost/mydatabase";
private static final String USER = "username";
private static final String PASS = "password";
private static final String QUERY = "SELECT * FROM users";
private Connection connection;
private Statement statement;
private ResultSet resultSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
new GetData().execute();
}
private class GetData extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
try {
Class.forName("com.mysql.jdbc.Driver"); //加载驱动类
connection = DriverManager.getConnection(DB_URL, USER, PASS); //建立连接对象,获取连接状态码并处理异常信息,返回Connection对象实例;如果无法获得连接对象实例则抛出SQLException异常;如果用户指定的用户名或密码不正确也会抛出SQLException异常;如果找不到指定的数据库文件也会抛出SQLException异常。
statement = connection.createStatement(); //创建Statement对象实例;用于发送执行SQL语句的请求到数据库上,并获取其结果集ResultSet对象实例;Statement接口提供了用于执行静态SQL语句并返回其结果的对象,此处为执行查询操作的SQL语句"SELECT FROM users",注意此方法可能会抛出SQLException异常。
resultSet = statement.executeQuery(QUERY); //执行SQL查询并返回结果集ResultSet对象实例;此处为查询操作的SQL语句"SELECT FROM users"的结果集,注意此方法可能会抛出SQLException异常。
while (resultSet.next()) { //遍历结果集ResultSet对象实例;此处为查询操作的SQL语句"SELECT FROM users"的结果集,注意此方法可能会抛出SQLException异常。 textView.setText(resultSet.getString("name")); //获取结果集中的某一列的值并赋值给变量userName;此处为获取名为"name"的列的值并将其赋值给变量userName,注意:此方法可能会抛出SQLException异常。 } } catch (ClassNotFoundException | SQLException e) { //捕获异常并处理;此处为捕获了ClassNotFoundException和SQLException两种类型的异常;当程序运行过程中发生这两种类型的异常时,会执行相应的catch块中的代码进行处理;此处的处理方式为打印异常信息到控制台。 e.printStackTrace(); } finally { //最后执行的操作;此处为关闭ResultSet、Statement和Connection三种类型的资源;当程序运行结束后,无论是否发生异常,都会执行finally块中的代码进行资源的释放;此处的释放方式为调用它们的close()方法将它们关闭。 try { if (resultSet != null) resultSet.close(); } catch (SQLException e) {} try { if (statement != null) statement.close(); } catch (SQLException e) {} try { if (connection != null) connection.close(); } catch (SQLException e) {} } } return null; //返回null表示异步任务执行成功;此处为异步任务GetData的execute()方法返回null表示该任务执行成功。 } } } ```
以上代码首先加载了MySQL的JDBC驱动类,然后建立了一个到MySQL服务器的连接,接着创建了一个Statement对象并通过它执行了一个SQL查询语句,最后遍历了查询结果并将结果显示在一个TextView控件上。