SQLite Java Login + Datenbankverbindung

  • Themenstarter Themenstarter Bogenschuetze
  • Beginndatum Beginndatum
B

Bogenschuetze

Gast
Hey Leute,
bin neu in diesem recht interessanten Forum unterwegs und hätte da auch gleich schon eine Frage 😀

Und zwar möchte ich mit meiner Informatikgruppe einen Java Login schreiben, der mit einer .sqlite Datenbank verbindet. Habe jetzt eine Datenbank "test.sqlite" erstellt mit den Spalten "Username" & "Password" natürlich mit Datensätzen drinne(username=root;password=1234).
Soviel zu dem Thema habe jetzt schon viel gegoogelt und einiges gefunden jedoch benötige ich Hilfe ._.
Ich arbeite mit Netbeans und habe auch schon die sqlitejdbc.jar als Lib hinzugefügt und eine DBConnection Klasse erstellt namens : javaconnect.java 😀
Die eigentliche Main Prozedur steckt jedoch in meiner Login.java Klasse.. [Form]
Wenn ich jedoch mein Programm starte ist mein java out of memory direkt beim Anfang und wenn ich meine Action betätige, also den Login Button drücke..
Wäre nett wenn ihr mich unterstützen könntet und meine beigelegten Sources einmal kontrollieren 🙂
javaconnect.java:
[JAVA=42] import javax.swing.*;
import java.sql.*;

public class javaconnect
{
Connection conn = null;
public static Connection ConnecrDb()
{
try
{
Class.forName("org.sqlite.JDBC");
Connection conn =DriverManager.getConnection("jdbc:sqlite:C:\\Users\\René\\Desktop\\test.sqlite");
return conn;
}catch (Exception e)
{
JOptionPane.showMessageDialog(null, e);
return null;
}


}
}
[/code]
Login.java :
[JAVA=42]
import java.awt.*;
import java.sql.*;
import javax.swing.*;
public class Login extends javax.swing.JFrame {
Connection conn = null;
ResultSet rs=null;
PreparedStatement pst=null;
public Login() {
initComponents();
conn = javaconnect.ConnecrDb();

}



// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
txt_passwort = new javax.swing.JPasswordField();
txt_username = new javax.swing.JTextField();
cmd_login = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Loginfenster", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 14), new java.awt.Color(51, 51, 255))); // NOI18N

jLabel2.setText("Passwort:");

cmd_login.setText("Login!");
cmd_login.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmd_loginActionPerformed(evt);
}
});

jLabel1.setText("Username:");

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(jLabel1))
.addGap(38, 38, 38)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txt_passwort, javax.swing.GroupLayout.DEFAULT_SIZE, 127, Short.MAX_VALUE)
.addComponent(txt_username)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cmd_login)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txt_username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(21, 21, 21)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txt_passwort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(41, 41, 41)
.addComponent(cmd_login)
.addContainerGap(29, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);

pack();
}// </editor-fold>

private void cmd_loginActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "select * from table1 where Username=? and Passwort=?";
try{
Connection conn =DriverManager.getConnection("jdbc:sqlite:C:\\Users\\René\\Desktop\\Programm\\LoginDatenbank.sqlite");
pst = conn.prepareStatement(sql);
pst.setString(1,txt_username.getText());
pst.setString(2,txt_passwort.getText());

rs=pst.executeQuery();
if(rs.next()){
JOptionPane.showMessageDialog(null, "Username und Password ist korrekt!");
Login2 s = new Login2();
s.setVisible(true);

}
else{
JOptionPane.showMessageDialog(null, "Username und Password falsch!!");



}


}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);





}
}


public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new Login().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton cmd_login;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPasswordField txt_passwort;
private javax.swing.JTextField txt_username;
// End of variables declaration
}
[/code]
 
Java:
          JOptionPane.showMessageDialog(null, "Username und Password ist korrekt!");
           Login2 s = new Login2();
           s.setVisible(true);

Warum erzeugst Du, wenn doch der Login in Ordnung war, wieder ein Login-Objekt?

Weiterhin fällt mir auf, dass die Code-Konvention von java sagt, dass Variablen, Methoden mit einem Kleinbuchstaben, Klassen mit einem Grossbuchstaben. Das Ablegen eines Passwortes in Klartext in einer DB ist ein No-Go. Häufig wird aus dem Passwort ein Hashwert (z.B. SHA-1) berechnet, vielleicht mit Username als Salt-Wert) und das wird beim Login verglichen.
 
Die 2. Login Klasse sollte eigentlich einen internen Memberbereich öffnen, falls bei Daten korrekt sind und verglichen wurden 😀
 
Klappt alles soweit, jedoch wenn ich auf den Login Button drücke, kommt eine Fehlermeldung : " out of memory" D: könnt ihr mir helfen? 😀
 

Neue Themen


Zurück
Oben