云服务器(云数据库)连接Mysql数据库【超详细-少踩雷】

Canace ·
更新时间:2024-11-14
· 924 次阅读

云端服务器连接Mysql和sql server数据库一. 华为云服务器1.云服务器配置2.使用远程桌面连接二.安装配置MySQL可视化软件三.Android Studio代码片段所有代码,直接贴出来到这就完毕了 一. 华为云服务器

百度搜索华为云服务,免费领取一个月云服务器/云数据库。我们这里先用云服务器为例。

1.云服务器配置

具体步骤如下:

选择Windows server 数据中心 64位版本; 点进实例,点远程登陆实例; 进入系统后,自行下载配置MySQL,这里就不具体写数据库的安装; 安装好后(我这里用的系统是Linux CentOs 7.x版本,不是Windows系统),在云服务上进入MySQL,Linux命令mysql -uroot -p,进入MySQL; 进入MySQL后执行CentOs命令:*grant all privileges on.*to ‘root’@’% identified by ‘你的MySQL数据库密码’’ with grant option;**这是允许远程访问配置; 执行关闭防火墙和数据库开机启动设置systemctl stop firewalld.service; 安装MySQL我就不详细介绍了,参考其他文章【MySQL安装配置】; 云服务器配置安全组(放出端口才能连接使用)
添加规则
 [
sqlserver端口是1433,相同步骤开放即可
现在云服务器都准备好了 2.使用远程桌面连接

Windows 64位数据中心版本,则:在本机电脑上,左下角搜索 远程桌面连接
第一栏输入云服务器的公网IP,第二栏输入Administrator
第一栏输入云服务器的公网IP,第二栏输入Administrator
点击连接,则进入了你的云服务器,就不用打开网页远程连接了。
在这里插入图片描述这里就连接成功云服务器了。

CentOS7系统:下载安装Xshell 6
新建在这里插入图片描述
点连接就行了。

二.安装配置MySQL可视化软件

在本机下载软件【Navicat for MySQL】15天试用。
搜索【PatchNavicat】可破解无限时间使用,需要的留下邮箱。

在这里插入图片描述
连接名自定义就行。
第二栏写云服务器公网的IP地址
用户名和密码写你MySQL的账号密码,点连接测试,确定。如果连接不成功即是你云端服务器MySQL没配置好,或者是云服务器安全配置没开放端口,需要自己设置

三.Android Studio

我这里采用的是Android studio软件,
先讲解再贴代码

private String drive=“com.mysql.jdbc.Driver”; //连接数据库的驱动
private String connect=“jdbc:mysql://公网IP地址/数据库名字?autoReconnect=true” 注释 //?autoReconnect=true代表MySQL长连接,由于MySQL8小时不操作即自动断开服务,需还自行连接,有这个即解决自动断开服务的问题
private String mysql_uid=“root”; //数据库用户名
private String mysql_passwd=“密码”; //数据库密码
private Connection cn=null;

还要再libs里添加驱动
在这里插入图片描述

右击,add 添加到build.gradle里
在这里插入图片描述

代码片段

代码片.

sign_in.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //线程 Thread thread = new Thread(new Runnable() { @Override public void run() { try { Class.forName(drive);//加载驱动 cn= DriverManager.getConnection(connect,mysql_uid,mysql_passwd); //驱动管理,写入数据,就是数据库连接字符串和数据库账号和密码 resultCount=insert();//返回的值 Log.e("run: ", String.valueOf(resultCount)); // 使用handler,使主线程响应并执行runShowResult方法 handler.post(runShowResult);//主线程 } catch (ClassNotFoundException e) { Log.e( "insert: ", "连接失败"); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }); thread.start();//线程运行 } });

响应超过五秒的操作都得开启新线程来运行
Thread thread = new Thread
数据信息循环操作 代码片.

String passwd[] = new String[20]; String user[] = new String[20]; String sql_queryALL = "select * from user_login"; Statement st = (Statement) cn.createStatement(); ResultSet rs = st.executeQuery(sql_queryALL);//执行sql语句 while (rs.next()){//循环数据库数据,每条数据都保存到数组user里面 String UserName = rs.getString("user_phone"); String UserPasswd = rs.getString("user_passwd"); user[i++]=UserName; passwd[j++]=UserPasswd; } 所有代码,直接贴出来 package com.example.loginqq.Login_item; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.example.loginqq.R; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; public class register_QQ_Mactivity extends AppCompatActivity { private Button sign_in; private ImageView fanhui; private EditText user_number,user_passwd; private String drive="com.mysql.jdbc.Driver"; private String connect="jdbc:mysql://IP/数据库名?autoReconnect=true"; private String mysql_uid="root";//数据库账号 private String mysql_passwd="****";//数据库密码 private Connection cn=null; private PreparedStatement ps=null; private Handler handler = new Handler(); private EditText editText; private int resultCount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); user_number=findViewById(R.id.register_user); user_passwd=findViewById(R.id.register_passwd); sign_in=findViewById(R.id.register_btn); skip();//跳转执行 } //跳转相关按钮 private void skip() { //返回登陆 fanhui = findViewById(R.id.return_back); fanhui.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(register_QQ_Mactivity.this,Login_QQ_Mactivity.class); startActivity(intent); finish(); } }); //注册按钮 sign_in.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Thread thread = new Thread(new Runnable() { @Override public void run() { try { Class.forName(drive); cn= DriverManager.getConnection(connect,mysql_uid,mysql_passwd); resultCount=insert(); Log.e("run: ", String.valueOf(resultCount)); // 使用handler,使主线程响应并执行runShowResult方法 handler.post(runShowResult); } catch (ClassNotFoundException e) { Log.e( "insert: ", "连接失败"); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }); thread.start(); } }); } private int insert() throws SQLException { int Count=1; String sql_queryALL = "select * from user_login"; String sql_insert = "insert into user_login (user_phone,user_passwd) values" + "(" + user_number.getText().toString().trim() +","+user_passwd.getText().toString().trim()+ ")"; //String sql_delete = "delete from test where phone=" + editText.getText().toString().trim(); Statement st = (Statement) cn.createStatement(); ResultSet rs = st.executeQuery(sql_queryALL); Log.e("insert: ","连接成功" ); String user[] = new String[20]; String passwd[] = new String[20]; int i=0,j=0; while (rs.next()){//循环数据库数据,每条数据都保存到数组user里面 String UserName = rs.getString("user_phone"); String UserPasswd = rs.getString("user_passwd"); user[i++]=UserName; passwd[j++]=UserPasswd; } for (i=0;i20&&user_passwd.getText().toString().length()<=6){ Looper.prepare(); Toast.makeText(getApplicationContext(), "密码长度在(6,21)之间,请重试", Toast.LENGTH_SHORT).show(); Looper.loop(); break; }else if(checkUsername(user_number.getText().toString().trim())==false){ Looper.prepare(); Toast.makeText(getApplicationContext(), "请输入正确的手机号", Toast.LENGTH_SHORT).show(); Looper.loop(); break; } continue; } //比对成功则执行else,显示已注册账号 else if(user_number.getText().toString().trim().equals(user[i])) { return Count =-1; } /*if (editText.getText().toString().trim().equals(user[i])){ Log.e("查看已注册账号", "i:" + user[i]); Looper.prepare(); Toast.makeText(MainActivity.this, "注册失败,已注册", Toast.LENGTH_SHORT).show(); Looper.loop(); break; }else { PreparedStatement pst = cn.prepareStatement(sql_insert); pst.executeUpdate(); //Log.e("注册成功: ", mybook); Looper.prepare(); Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); Looper.loop(); break; }*/ } //如果执行到已注册账号那一步,则break终止循环,执行下列语句,注册成功 PreparedStatement pst = cn.prepareStatement(sql_insert); pst.executeUpdate(); Looper.prepare(); Toast.makeText(register_QQ_Mactivity.this, "注册成功", Toast.LENGTH_SHORT).show(); Looper.loop(); return Count; } // 主线程响应方法,用于显示提示气泡 public Runnable runShowResult = new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 弹出气泡 if(resultCount==-1){ Toast.makeText(getApplicationContext(), "用户已注册,注册失败", Toast.LENGTH_SHORT).show(); } } }; //判断手机号是否正确 private boolean checkUsername(String username){ Pattern pattern = Pattern.compile("^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$"); Matcher matcher = pattern.matcher(username); return matcher.matches(); } } //以上思路就是创建连接数据库的字符串,往数据库里加入一个手机号和密码,一条数据,先rs.next()循环获取数据信息,并加入到数组里,再用循环调取数组数据,判断是否存在账号,账号是否正确,正则表达式判断,和为空否。 到这就完毕了

一个简单的云服务连接MySQL就是这些步骤了,目的是注册账号密码到云服务器里的数据库里。


作者:长安故里.



云数据 云服务器 服务器 数据 云数据库 mysql数据库 数据库 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号