添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在大多数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