百度搜索华为云服务,免费领取一个月云服务器/云数据库。我们这里先用云服务器为例。
具体步骤如下:
Windows 64位数据中心版本,则:在本机电脑上,左下角搜索 远程桌面连接
第一栏输入云服务器的公网IP,第二栏输入Administrator
点击连接,则进入了你的云服务器,就不用打开网页远程连接了。
这里就连接成功云服务器了。
CentOS7系统:下载安装Xshell 6
新建
点连接就行了。
在本机下载软件【Navicat for MySQL】15天试用。
搜索【PatchNavicat】可破解无限时间使用,需要的留下邮箱。
连接名自定义就行。
第二栏写云服务器公网的IP地址
用户名和密码写你MySQL的账号密码,点连接测试,确定。如果连接不成功即是你云端服务器MySQL没配置好,或者是云服务器安全配置没开放端口,需要自己设置
我这里采用的是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;
代码片
.
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;i<user.length;i++){
//输入的数据和数组挨个比对,一条输入的数据和数组全部数据进行比对,判断是否注册
if (!user_number.getText().toString().trim().equals(user[i])){
if(user_number.getText().toString().trim().equals("")) {
Looper.prepare();
Toast.makeText(getApplicationContext(), "用户名不能为空", Toast.LENGTH_SHORT).show();
Looper.loop();
break;
}else if(user_passwd.getText().toString().trim().equals("")){
Looper.prepare();
Toast.makeText(getApplicationContext(), "密码不能为空", Toast.LENGTH_SHORT).show();
Looper.loop();
break;
}
else if(user_passwd.getText().toString().length()>20&&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就是这些步骤了,目的是注册账号密码到云服务器里的数据库里。