2017-10-16 44 views
0

即时通讯新的Java,我在c#中的经验,我想尝试java,因为它是我的uni使用的编程语言。
在用c#完成一些项目后,我发现我犯的一个重大错误是我没有在一个地方存储数据库连接细节。 (我曾经包括连接字符串每次我执行一个查询)
我创建一个简单的登录表单为初学者。使用存储的数据库信息来执行sql查询java

sqlDB.java

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class sqlDB{ 



    public Connection connect() { 
    Connection con = null; 
    String url = "jdbc:sqlserver//SERVER IP"; 
    String db = "DBNAME"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String user = "USERNAME"; 
    String pass = "PASSWORD"; 
    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(url + db, user, pass); 
     if (con == null) { 
      System.out.println("Connection cannot be established"); 
     } 
     return con; 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return null; 
} 



} 

Login.java

这是登录按钮事件

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

     String username = usernameText.getText(); // username textbox value 
     String password = passwordText.getText(); // password textbox value 
    }  

如何使用在sqlDB.java在登录数据库连接。 java,执行查询如

"'Select user,pass from login where user='"+username+"' and pass='"+password+"' 

然后检查一些或多行登录..

回答

0

有可能检查您的凭据与您的数据库,它取决于您使用的数据库。例如,你可以做这样的事情:Check credentials of SQL Login

Scince你没有提到你使用什么数据库,继续寻找适合你的系统的解决方案。

其他选项是在本地存储密码(加密)并离线比较。

或者你可以简单地对一个总是包含一些东西(如Select * From Humans Where HumanID = 1;)的表执行一个SQL查询,并检查你是否得到一个结果,但这是一种草率和不好的做法。

+0

我使用MS SQL,我问如何使用返回的'con'在sqDB.java窗体中login.java来执行SQL查询 –

+0

因此,您只想知道如何执行SQL querry? –

0

这是初始化MS SQL连接
文件名的Java代码:DatabaseCon.java

/** 
* 
* @author Charindu Edirisuriya 
*/ 
package dash.control; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class DatabaseCon{ 



    public Connection connect() { 

    Connection con = null; 
     String url = "jdbc:sqlserver://HOST;DatabaseName=DATABASENAME"; 
     String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
     String user = "USERNAME"; 
     String pass = "PASSWORD"; 
    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(url, user, pass); 
     if (con == null) { 
      System.out.println("Connection cannot be established"); 
     } 
     return con; 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return null; 
} 



} 

这是使用SQL连接,检查一个简单的Java窗体如果某些记录存在于数据库中(简单登录表单)。

登录按钮的Click事件触发以下代码

Connection connection; 
PreparedStatement ps; 

String username = usernameText.getText(); // Usename Textbox 
String password = String.valueOf(passwordText.getPassword()); //Password Textbox 


try{ 
    DatabaseCon db = new DatabaseCon(); 
    connection = db.connect(); 
    ps = connection.prepareStatement("SELECT Username, Password FROM Login WHERE Username = ? AND Password = ?"); 
    ps.setString(1, username); 
    ps.setString(2, password); 
    ResultSet result = ps.executeQuery(); 
    if(result.next()){ 
     System.out.println("Login Successesfully"); 
     new Main_Form().setVisible(true); //Loads new Form 
     this.setVisible(false); 



     } 
     else{ 
      System.out.println("Invalide Username Or Password"); 

     } 
    } 
    catch(Exception e) { 
    System.out.println(e); 
    JOptionPane.showMessageDialog(null, "Check your Internet Connection!","Iane error",JOptionPane.ERROR_MESSAGE); 
} 

这段代码的主要目的是保存在不同的Java文件中的SQL连接和使用整个程序的连接,所以你不会有每次更改服务器设置以升级或更改SQL Server。只需修改SQL连接文件即可!