如何防止重复。 Java,SQL

问题描述:

我尝试复制username列中的条目,但结果总是在else语句中,即数据已成功插入表中,根据if语句不应该复制数据。顺便说一下String value1=username1.getText();如何防止重复。 Java,SQL

下面的代码:

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

if (sq.equals(value1)){ 
JOptionPane.showMessageDialog(null,"username is already existed! please 
create new username."); 
} 
else{ 
int k=st.executeUpdate("insert into 
login(username,password,firstname,lastname,address,contactno) 


values('"+value1+"','"+value2+"','"+value3+"','"+value4+"', 
'"+value5+"','"+value6+"')"); 
JOptionPane.showMessageDialog(null,"Data is successfully saved"); 
} 
+0

你有debbuged和检查两个字符串的值是否相等? – VedX

+4

那么你从来没有真正执行'SELECT用户名'查询。如何在不运行查询的情况下获得结果集? –

+1

@shinbona据我了解你的代码后,你还没有执行“sq”查询。您必须比较执行sq返回的结果 –

平方米绝不等于值1,如果你只是把它分配给一个完整的SELECT语句:

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

你所缺少的是对DB要求您平方字符串。

您只需创建SQL字符串并从不运行它(而不是将其与用户名进行比较,该用户名始终为false)。

你应该实际执行它并检查结果。 例如(错误处理和资源清理省略了简洁起见):

Connection conn = // Connect to the database... 
PreparedStatement ps = 
    conn.prepareStatement("SELECT username FROM login where username = ?"; 
ps.setString(1, value1); 
ResultSet rs = ps.executeQuery(); 
if (rs.next()) { 
    JOptionPane.showMessageDialog 
     (null,"username is already existed! please create new username."); 
} 
+1

非常感谢!这是如此有帮助:) – shinbona

sq包含查询(SQL代码)

String sq = "SELECT username FROM login where username = '"+value1+"'"; 

value1包含的用户名的值(例如 “用户1”)。所以

sq.equals(value1) 

将永远假

"SELECT username FROM login where username = '"+value1+"'" != value1 

字符串基础知识:

String sq = "Something in double quotes" 

分配Something以SQ

而且

String value1=username1.getText(); 

可能会得到一些其他的字符串,可以说,例如“根”

sq.equals(value1) 

现在String类equals()两个字符串(平方和值1)的方法检查内容。

如果不相等返回false,这发生在你的情况。

现在如何实现你的目标?人们已经回答说检查它。

我推荐你自己study