Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中的SQL Server登录_Java_Sql - Fatal编程技术网

使用Java中的SQL Server登录

使用Java中的SQL Server登录,java,sql,Java,Sql,我刚开始研究Java和SQL Server之间的联系。 我在登录数据库中创建了多个帐户。但只有第一条记录会导致成功登录 我的问题是如何让它接受其他帐户? 我相信我的问题在于代码,但我在修复逻辑错误方面很弱。 这是我的密码: try { if(e.getSouce()==loginButton){ String user = usernameTF.getText().trim(); String pass = passwordTF.getText().tri

我刚开始研究Java和SQL Server之间的联系。 我在登录数据库中创建了多个帐户。但只有第一条记录会导致成功登录

我的问题是如何让它接受其他帐户? 我相信我的问题在于代码,但我在修复逻辑错误方面很弱。 这是我的密码:

try {
    if(e.getSouce()==loginButton){
        String user = usernameTF.getText().trim();
        String pass = passwordTF.getText().trim();
        String sqlLogin = "select username , 
                                   pssword 
                           from tblLogin 
                           where username = '"+user+"'
                           and pssword = '"+pass+"'";
         rs = st.executeQuery(sqlLogin);
        int count = 0;  
            while(rs.next()){
                count+=1;
            }//while
            if(count==1){
                JOptionPane.showMessageDialog(null, "Login Successful!");
                mainFrame.dispose();
                firstPage page1 = new firstPage();  
            }
tblogin

create table tblLogin ( username nvarchar(50) NULL, pssword nvarchar(50) NULL )

username    password 
Jerlon      hello 
buenconsejo jerlon 
jujux       jerlon 
jujux       jerlon 
Buenconsejo jerlon 
NULL        NULL

这是非常糟糕的设计

首先,不要使用+来创建查询。这是一个允许sql注入的错误。使用
PreparedStatement
创建带有用户参数的查询

不要以纯文本形式存储密码。使用散列(例如md5)

对select语句使用限制1(或
count(*)

不要在
结果集
时使用
。使用
if
语句

if(rs.next()) {
}
这是一个sql示例:

select * from tblLogin 
where username = ? and password = md5(?)
limit 1

编辑:如果使用用户名和密码的唯一密钥,则使用具有某些名称(或密码)的用户不是问题(逻辑问题)

表中所有用户名都是唯一的,对吗?因此,根据在texbox中键入的用户名,它每次只返回一行。您可以显示一些示例吗?您的代码容易受到SQL注入的攻击。您应该像这样使用PreparedStatement@Sachu?用户名密码Jerlon你好buenconsejo Jerlon jujux Jerlon jujux Jerlon buenconsejo Jerlon空NULL@AfsunKhammadli'创建表tblLogin(用户名nvarchar(50)NULL,单词nvarchar(50)NULL)'我做得对吗?@Juju你有多个用户名为jerlon的用户。.这在登录表中不好。.你应该将用户名设置为唯一的。.有任何网站允许你使用已经在使用的用户名注册吗?我想知道md5(?)和限制1是什么意思。现在,我还创建了一个方法来获取sql语句“public void getQuery(String query){try{con=DriverManager.getConnection”(“jdbc:sqlserver://localhost:1433;databaseName=login_DB;integratedSecurity=true”);st=con.createStatement();st.executeUpdate(query);}//try-catch(异常ee){ee.printStackTrace()//catch}//getQuery()'可以吗?首先,对不起,may的英语很糟糕:(md5是一个函数,它从输入中返回md5哈希值。这通过减少密码被盗的机会来提高安全性,因为没有人可以看到密码(即使是管理员sql server)。limit语句限制结果(在本例中为1)因为只有一个支票账户(这是优化,以及用
if
替换
while
)。在您的代码中,关键的地方是构建提交给getQuery的查询。要说这是确定的,您必须展示我们是如何创建的。