安卓程序与数据库的连接与打开mySQL 的远程连接
安卓程序与数据库的连接与打开mySQL 的远程连接
本文主要是分析安卓程序与数据库的连接代码的撰写,还有实现navcat打开mySQL 的远程连接
文章目录
一、第一步:建立连接
下面是一个例子,用于与MYSQL 进行连接
private static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver"); //加载驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//你的本机ip地址
String ip = "192.168.31.212";
conn = DriverManager.getConnection(
"jdbc:mysql://" + ip + ":3306/" + DB_NAME + "?serverTimezone=Asia/Shanghai&useSSL=false",
"root", "1234");
Log.d(TAG, "数据库连接成功");
} catch (SQLException ex) {
Log.d(TAG, "数据库连接失败" + ex.toString());
ex.printStackTrace();
}
return conn;
}
这段代码主要用于建立与数据库的连接。下面是逐步解释其具体过程:
-
加载驱动程序:
Class.forName("com.mysql.jdbc.Driver")
用于加载 MySQL 驱动程序。这一步是必须的,它告诉 JVM 在运行时加载 MySQL 驱动程序类,以便建立数据库连接。
-
获取数据库连接:
- 首先定义了一个
Connection
类型的变量conn
用于存储数据库连接。 - 然后使用
DriverManager.getConnection()
方法建立数据库连接。该方法接受三个参数:- 第一个参数是数据库连接的 URL,包括了数据库的地址、端口号、数据库名称以及一些连接参数。
- 第二个参数是用户名。
- 第三个参数是密码。
- 在这里,数据库地址是本地IP地址(例如:“192.168.31.212”),端口号是 MySQL 默认的3306端口,数据库名称是
DB_NAME
。 - URL 的格式为
"jdbc:mysql://ip:port/dbname?serverTimezone=Asia/Shanghai&useSSL=false"
,其中:jdbc:mysql://
指定了使用 MySQL 数据库。?serverTimezone=Asia/Shanghai
用于设置服务器时区,这里设置为上海时区。&useSSL=false
表示不使用 SSL 连接,因为在开发阶段通常不需要。
- 如果连接成功,将会输出"数据库连接成功"的日志信息。
- 如果连接失败,则会输出"数据库连接失败"的日志信息,并打印异常信息。
- 最后将连接对象
conn
返回。
- 首先定义了一个
连接建立后,可以通过这个连接执行 SQL 查询、插入、更新和删除等数据库操作。
下面是 getConnection()
方法的使用方法:
Connection conn = getConnection(); // 获取数据库连接
此处会根据数据库连接参数建立与数据库的连接。连接建立成功后,将可以执行其他数据库操作。
二、第二步 对数据库中的数据进行增删改查
2.1 查询数据库中的数据
下面是一个获取数据的例子:
public static ArrayList<User> getAllUser() {
ArrayList<User> userArrayList = new ArrayList<>();
Connection conn = getConnection();
try {
String sql = "SELECT * FROM coll_data ";
// 创建用来执行sql语句的对象
Statement st = conn.createStatement();
// 执行sql查询语句并获取查询信息
ResultSet res = st.executeQuery(sql);
if (res == null) {
return null;
} else {
while (res.next()) {
User user = new User();
user.setId(res.getString("id"));
user.settemp(res.getString("temp"));
user.sethum(res.getString("hum") + "");
user.setAlcohol(res.getString("alcohol")+"");
user.setPeople(res.getString("peple")+"");
user.setSupersonic(res.getString("surpersomic")+"");
userArrayList.add(user);
}
//关闭连接
conn.close();
st.close();
res.close();
return userArrayList;
}
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, " 查询数据库数据操作异常......");
return null;
}
}
getAllUser()
函数:
这个函数的作用是从名为 coll_data
的表中获取所有用户信息,并将其封装为 User
对象的列表返回。
- 首先,通过
getConnection()
方法获取与数据库的连接。 - 然后,构造 SQL 查询语句
"SELECT * FROM coll_data"
,用来从coll_data
表中检索所有数据。 - 接着,创建用来执行 SQL 语句的
Statement
对象st
。 - 通过
st.executeQuery(sql)
执行 SQL 查询,并将结果存储在ResultSet
对象res
中。 - 然后,遍历结果集
res
,逐行读取每个用户的信息,并使用User
对象的相应方法设置用户的属性。 - 最后,将设置好属性的
User
对象添加到ArrayList
中,并返回该列表。 - 在方法末尾关闭数据库连接、语句对象和结果集对象。
2.2 删除数据库中的数据
public static int delete(String id) throws SQLException {
Connection conn = getConnection();
try {
Statement st = conn.createStatement();
String sql = "delete from tb_user where id = '" + id + "'";
//System.out.println(sql);
int res = st.executeUpdate(sql);
if (res == 0) {
System.out.println("删除失败");
return 0;
} else {
System.out.println("删除成功");
}
//关闭连接
conn.close();
st.close();
return 1;
}
catch (Exception e) {
e.printStackTrace();
Log.d(TAG, " 数据操作异常");
return 0;
}
}
delete()
函数:
这个函数的作用是根据传入的用户ID从名为 tb_user
的表中删除对应的用户信息。
- 首先,通过
getConnection()
方法获取与数据库的连接。 - 然后,构造 SQL 删除语句
"delete from tb_user where id = '" + id + "'"
,根据传入的ID删除对应的用户信息。 - 接着,通过
st.executeUpdate(sql)
执行 SQL 删除语句,并获取受影响的行数。 - 如果受影响的行数为0,则表示删除失败;否则,表示删除成功。
- 在方法末尾关闭数据库连接和语句对象。
2.3 添加数据至数据库
public static void add(String id,String upwd,String sexy,String isvalid,String uname,String arrivaldate,String birthday) throws SQLException {
Connection conn = getConnection();
try {
Statement st = conn.createStatement();
String sql = "insert into tb_user(id, uname,upwd,sexy,isvalid,arrivaldate,birthday) values("+"'"+id+"',"+"'"+ uname +"',"+"'"+upwd+"',"+"'"+sexy+"',"+"'"+isvalid+"',"+"'"+arrivaldate+"',"+"'"+birthday+"')";
//System.out.println(sql);
int res = st.executeUpdate(sql);
if (res == 0) {
System.out.println("增加失败");
return ;
} else {
System.out.println("增加成功");
}
//关闭连接
conn.close();
st.close();
return ;
}
catch (Exception e) {
e.printStackTrace();
Log.d(TAG, " 数据操作异常");
return ;
}
}
add()
函数:
这个函数的作用是向名为 tb_user
的表中插入新的用户信息。
- 首先,通过
getConnection()
方法获取与数据库的连接。 - 然后,构造 SQL 插入语句,将传入的用户信息插入到
tb_user
表中。 - 接着,通过
st.executeUpdate(sql)
执行 SQL 插入语句,并获取受影响的行数。 - 如果受影响的行数为0,则表示插入失败;否则,表示插入成功。
- 在方法末尾关闭数据库连接和语句对象。
2.4 修改数据库中的数据
public static void update(String id,String upwd,String sexy,String isvalid) throws SQLException {
Connection conn = getConnection();
try {
Statement st = conn.createStatement();
String sql = "update tb_user set upwd="+"'"+upwd+"',"+"sexy="+"'"+sexy+"',"+"isvalid="+"'"+isvalid+"' where id="+"'"+id+"'";
//System.out.println(sql);
int res = st.executeUpdate(sql);
if (res == 0) {
System.out.println("修改失败");
return ;
} else {
System.out.println("修改成功");
}
//关闭连接
conn.close();
st.close();
return ;
}
catch (Exception e) {
e.printStackTrace();
Log.d(TAG, " 数据操作异常");
return ;
}
}
update()
函数:
这个函数的作用是根据传入的用户ID更新名为 tb_user
的表中对应的用户信息。
- 首先,通过
getConnection()
方法获取与数据库的连接。 - 然后,构造 SQL 更新语句,根据传入的用户ID更新相应的用户信息。
- 接着,通过
st.executeUpdate(sql)
执行 SQL 更新语句,并获取受影响的行数。 - 如果受影响的行数为0,则表示更新失败;否则,表示更新成功。
- 在方法末尾关闭数据库连接和语句对象。
这些函数都是对数据库进行增删改查操作的,通过连接到数据库,构造合适的 SQL 语句,然后执行这些 SQL 语句来实现相应的操作。
三、开启MySQL的远程连接
开启MySQL远程访问权限 允许远程连接
3.1 在navicat中直观的修改
1.打开你要使用的连接名
不一定是root,具体问题具体分析
2.找到一个mysql的数据库
3.在mysql数据库中有一个user的表
打开这个表
然后将第一个root用户的Host改为==%==,将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,所以建议在开发时设为%
这样才打开了数据库的远程连接,安卓的程序才可以连接上数据库。
3.2 命令法
如果你没有将mysql可视化的软件,那么你可以通过终端进行命令修改相关权限
依次使用命令下面实现上面第一种方法时的改表:
use mysql;
update user set host = '%' where user = 'root';
原文地址:https://blog.csdn.net/qq_63831368/article/details/139021543
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!