Android studio获取MySQL内容
时间: 2023-12-11 16:04:03 浏览: 241
Android Studio本身并不支持直接连接MySQL数据库,需要使用第三方库进行连接。常用的库包括:
1. JDBC:Java Database Connectivity,Java数据库连接,是Java平台中标准的API,可以用于连接各种数据库。使用JDBC连接MySQL需要下载MySQL的JDBC驱动,然后在Android Studio中引入该驱动。
2. Volley:Google开发的网络请求库,可以用于向服务器发送HTTP请求,获取MySQL数据库的内容。
3. Retrofit:Square公司开发的网络请求库,可以用于向服务器发送HTTP请求,获取MySQL数据库的内容。
具体实现步骤如下:
1. 在Android Studio中创建一个新的项目。
2. 在build.gradle文件中添加MySQL的JDBC驱动依赖:
```
dependencies {
implementation 'mysql:mysql-connector-java:8.0.21'
}
```
3. 在MainActivity中添加连接MySQL数据库的代码:
```
import java.sql.*;
public class MainActivity extends AppCompatActivity {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://服务器地址:端口号/数据库名?user=用户名&password=密码&useUnicode=true&characterEncoding=utf-8");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
// 查询数据
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM 表名");
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
// TODO: 处理数据
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
4. 在AndroidManifest.xml文件中添加网络权限:
```
<uses-permission android:name="android.permission.INTERNET" />
```
5. 在MainActivity中使用Volley或Retrofit获取MySQL数据库的内容。
使用Volley:
```
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取数据
String url = "http://服务器地址:端口号/查询数据的API";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// TODO: 处理数据
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
Volley.newRequestQueue(this).add(request);
}
}
```
使用Retrofit:
```
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取数据
String url = "http://服务器地址:端口号/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(ScalarsConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
Call<String> call = apiService.getData("查询数据的API");
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
String data = response.body();
// TODO: 处理数据
}
@Override
public void onFailure(Call<String> call, Throwable t) {
t.printStackTrace();
}
});
}
}
```
6. 在AndroidManifest.xml文件中添加网络权限:
```
<uses-permission android:name="android.permission.INTERNET" />
```
7. 创建一个ApiService接口,用于定义获取MySQL数据的API:
```
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
public interface ApiService {
@GET("{api}")
Call<String> getData(@Path("api") String api);
}
```
阅读全文