在大多数Android项目中,数据的读取和保存都是通过调用服务器的接口来实现的,所以对于本地数据库的操作是很少的。但是,在前段时间的项目中,客户提出了要直接连接服务器上的数据库来操作数据,这对于一个Android小白来说还从没遇到过,于是开始了各种搜索,各种尝试,毕竟客户就是上帝,你懂的.........终于,在经过不断的尝试以后,终于成功连上了数据库。现在就来聊一聊吧。
JDBC(JAVA DATEBASE CONNECTIVITY):是使用java存取数据库系统的标准解决方案,它将不同数据库间各自差异API与标准SQL语句分开看待,实现了数据库无关的java操作。
(就是说我们只需要专注jdbc API提供的接口和类以及标准的SQL语句,并且能够运用,而不需要了解底层数据库驱动程序与相关的操作接口的差异)
运用JDBC访问数据库一共分为七个步骤:
1,加载JDBC驱动程序
2,提供链接参数(数据库地址,用户名和密码)
3,建立一个数据库连接(创建一个Connection对象)
4,创建一个Statement
5,执行SQL语句
6,处理结果
7,关闭JDBC对象
(其中有四个关键类:DriverManager,Connection,Statement,ResultSet,可通过API具体了解其使用方法)
首先你需要下载一个jdbc.jar的jar包。然后将jar包导入到自己的项目中,如图:
然后我们写一个服务来连接数据库,代码如下:
public class My_service_mysql extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e("驱动加载失败", e1.toString());
}
try {
//IP为服务器ip,DBNAME为数据库名字,DBUSER为数据库用户名,DBPASS为数据库密码
Connection connection = DriverManager.getConnection("jdbc:mysql://"+IP+":3306/"+DBNAME,DBUSER,DBPASS);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e("数据库连接失败", e1.toString());
}
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
stopSelf();
}
在数据库连接成功之后,我们就需要进行数据库操作了,需要使用sql语句。
首先是查询:
//sql语句
String sql = "select tableName where colum = " + value;
Statement stmt = (Statement) connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
String id = rs.getString("colum");
}
stmt.close();
通过createStatement得到Statement对象,然后通过Statement的executeQuery方法得到ResultSet对象,就是查询的结果。然后取出你需要的字段。查询完之后关闭资源。
然后是插入和更新操作:
String sql= "insert into tableName values (value,
value
,
value
,
value
)”;
Statement stmt = (Statement) connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
stmt.executeUpdate(sql);
stmt.close();
在存储过程中可能会遇到文件的存储,也就是数据库中BLOB类型的数据,存储方式如下:
PreparedStatement pstmt = null;
File file = new File(path);
InputStream photoStream = new FileInputStream(file);
String sql = "INSERT INTO tableName VALUES (
?)"; //问号表示数据类型为BLOB的字段插入的值
pstmt = (PreparedStatement) LKF_static.connection.prepareStatement(sql);
pstmt.setBinaryStream(1, photoStream, (int) file.length());
pstmt.executeUpdate();
pstmt.close();
在编程的过程中需要注意几点:
1,加载驱动和连接数据库的操作一定要放在线程中,不然会报错
2,在进行数据库操作之后需要关闭资源,如果资源关闭了就不能进行数据库操作了
3,就是需要注意打开需要的权限
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 从SDCard读取数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
网上也有人说要使用JDBC连接数据库需要注意API版本,要是API版本高于17则不能成功连接,所以我用的API版本是16
我现在正在努力解决一个问题 . 我在免费托管服务器(fdb3.freehostingeu.com)中安装了一个
数据库
. DB是MySql . 我从here导入了
数据库
连接的jar文件 . 我已将其作为gradle中的依赖项导入,我已在Manifest中设置了Internet权限以及所有内容 . 我正在
使用
AsyncTasc进行连接 .这是带有方法的类 .public class CheckLo...
Android
通过
JDBC
访问MySql数据的方法和注意事项1.
android
中访问MySql
数据库
的代码:package com.example.te;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;impor...
在
Android
应用程序中连接 MySQL
数据库
可以帮助开发人员实现更丰富的数据管理功能。本教程将介绍如何在
Android
应用程序中
使用
低版本的 MySQL Connector/J 驱动程序来连接 MySQL
数据库
。
在
Android
Mainfest.xml中添加请求访问网络的权限
<uses-permission
android
:name=”
android
.permission.INTERNET”/>
在libs目录下导入jar包
编写工具类
package com.example.mail.manager;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import j.
此示例向您展示如何直接从
Android
连接和读取 MySQL
数据库
中的数据。以下步骤和代码片段将向您展示如何做到这一点。
将 MySQL
JDBC
驱动程序添加到您的项目依赖项中。打开app/build.gradle文件并添加依赖项。
dependencies {
implementation 'mysql:mysql-connector-java:5.1.49'
如果您想连接到 MariaDB,您可以
使用
更改
JDBC
驱动程
下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java。链接:https://pan.baidu.com/s/153hgUmRVAr9xfbFQxsBbkQ。建议
使用
:mysql-connector-java-5.1.49.jar 版本。在libs下添加MySQL驱动。
andriod
连接数据库
(MySQL)
首先,直接
连接数据库
不能直接写在主线程内,一般写在子线程中,同时app在配置文件中还要写上请求网络的静态权限,其次注意MySQL版本和mysql-connector-java 之间的版本,mysql5.6 可以和mysql-connector-java-5.1.8等进行搭配,可以直接
使用
,网上很多也是mysql5.X的
数据库
的连接教程,但是mysql8.X的
数据库
我用相应的mysql-connector-java-8.0.X在进行连接时会闪退。
所以一般 mysql