1、适用场景
当你不希望存入数据库中的某组数据重复。我这里的例子是一个注册系统,不希望账户名重复。
2、设置数据库中某字段不重复
alter table user.users add unique(account);
alter table + 数据库名.表名 + add unique (字段名);
3、java连接数据库
连接数据库需要先导入mysql-connector-java-5.1.36-bin.jar包
下载地址
下载好之后在idea中创建个Directory
解压下载好的包,复制下图中框出的文件
将文件复制到我们刚刚建的文件夹中
最后
前置做好之后,我们开始连接数据库
package StudentManagerSystem;
import java.sql.*;
public class text {
private static Connection connection;//与数据库的连接对象
private static Statement statement;// SQL语言执行对象
/*
URL:ip地址和端口
DATABASE:数据库名
USER:数据库账户
PASSWORD:数据库密码
*/
private static final String URL = "jdbc:mysql://47.93.36.12:3306/";
private static final String DATABASE = "user";
private static final String USER = "root";
private static final String PASSWORD = "密码";
private text() {
}
static {
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void getCon(){
//创建连接
try {
connection = DriverManager.getConnection(URL+DATABASE,USER,PASSWORD);
} catch (SQLException e) {
e.printStackTrace( );
}
}
public static void disGetCon(){
//关闭连接
if (connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace( );
}
}
if (statement != null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace( );
}
}
}
public static int select (String sql) throws SQLException {
//这个方法的意思是输入一个查询类的sql指令返回一个查询结果集.
getCon();
statement = connection.createStatement();
ResultSet re = statement.executeQuery(sql);
re.next();
int number = re.getInt("count");
disGetCon();
return number;
}
public static boolean set(String sql) throws SQLException {
//这个方法可以通过sql命令实现添加、删除或者修改数据库表中数据并返回是否成功
getCon();
statement = connection.createStatement();
boolean execute = statement.execute(sql);
disGetCon();
return execute;
}
}
4、查重
首先我们数据库中存入账号,账户名“123”
然后我们在java中添加一组账户,账户名也是“123”
public static void main(String[] args) {
//拿到一个账户
String account = "123";
String password = "321";
String name = "张三";
String identity = "学生";
//输入一段sql命令
String sql = "select count(account) as 'count' from users where account = " + account ;
try {
if (select(sql)>0){
System.out.println("账户名重复");
}else {
set("insert into users(account,password,name,identity) value (" +"'"+account+"'"+","+"'"+password+"'"+","+"'"+name+"'"+","+"'"+identity+"'"+")");
}
} catch (SQLException e) {
e.printStackTrace( );
}
}
这是输出结果,可以实现查重