我在Netbeans中制作一个简单的JavaSE登录jFrame。我创建了一个内部sql数据库,但问题是在启动应用程序时它有以下控制台输出:
run:
CONNECTION DONE!
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.apache.derby.client.net.NetConnection40 cannot be cast to com.mysql.jdbc.Connection
at DBConnection.connect(DBConnection.java:31)
at mainFrame.<init>(mainFrame.java:29)
at mainFrame$7.run(mainFrame.java:360)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BUILD SUCCESSFUL (total time: 1 second)
它表示已完成连接,但随后出现错误。我还在库中导入了derbyclient.jar文件。我在网上搜索了解决方案并尝试更换:
jdbc:derby://localhost:1527/JavaDB;
有了这个:
jdbc:derby://localhost:1527/JavaDB;create=true
代码:mainFrame
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.ResultSet;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author sniper
*/
public class mainFrame extends javax.swing.JFrame {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); // Getting dimentions for screen size
int xMouse; // for movement x axis
int yMouse; // for movement y axis
// FOR SQL CONNECTION
Connection conn = new DBConnection().connect();
/**
* Creates new form mainFrame
*/
public mainFrame() {
initComponents();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); // setting screen in center
txtUsername.setHorizontalAlignment(SwingConstants.CENTER); // center align txtUsername text
txtPassword.setHorizontalAlignment(SwingConstants.CENTER); // center align txtPassword text
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
lblHeaderText = new javax.swing.JLabel();
txtUsername = new javax.swing.JTextField();
txtPassword = new javax.swing.JPasswordField();
lblLoginTypeText = new javax.swing.JLabel();
cbType = new javax.swing.JComboBox<>();
btnEnter = new javax.swing.JLabel();
lblTopText = new javax.swing.JLabel();
lblIcon = new javax.swing.JLabel();
lblExit = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("SGMS");
setUndecorated(true);
setResizable(false);
jPanel1.setBackground(new java.awt.Color(0, 0, 0));
jPanel1.setForeground(new java.awt.Color(255, 255, 255));
jPanel1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
jPanel1MouseDragged(evt);
}
});
jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jPanel1MousePressed(evt);
}
});
jPanel2.setBackground(new java.awt.Color(0, 51, 51));
jPanel2.setForeground(new java.awt.Color(153, 204, 255));
lblHeaderText.setBackground(new java.awt.Color(0, 51, 51));
lblHeaderText.setFont(new java.awt.Font("Arial Black", 1, 36)); // NOI18N
lblHeaderText.setForeground(new java.awt.Color(102, 102, 255));
lblHeaderText.setText("SGMS - LOGIN");
txtUsername.setBackground(new java.awt.Color(0, 0, 0));
txtUsername.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
txtUsername.setForeground(new java.awt.Color(255, 255, 255));
txtUsername.setText("Username");
txtUsername.setToolTipText("");
txtUsername.setBorder(null);
txtUsername.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
txtUsernameMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
txtUsernameMouseExited(evt);
}
});
txtPassword.setBackground(new java.awt.Color(0, 0, 0));
txtPassword.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
txtPassword.setForeground(new java.awt.Color(255, 255, 255));
txtPassword.setText("Password");
txtPassword.setBorder(null);
txtPassword.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
txtPasswordMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
txtPasswordMouseExited(evt);
}
});
lblLoginTypeText.setFont(new java.awt.Font("Arial Black", 0, 18)); // NOI18N
lblLoginTypeText.setForeground(new java.awt.Color(102, 204, 255));
lblLoginTypeText.setText("LOGIN TYPE");
cbType.setBackground(new java.awt.Color(0, 51, 51));
cbType.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "CHOOSE LOGIN TYPE", "Administrator", "Academic Staff", "Administrative Staff", "Student" }));
btnEnter.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\enter.png")); // NOI18N
btnEnter.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
btnEnter.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnEnterMouseClicked(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
btnEnterMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
btnEnterMouseExited(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(66, 66, 66)
.addComponent(lblHeaderText)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(25, 25, 25)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtUsername, javax.swing.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE)
.addComponent(txtPassword))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblLoginTypeText)
.addGap(86, 86, 86))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(104, 104, 104)
.addComponent(cbType, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(26, Short.MAX_VALUE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnEnter)
.addGap(256, 256, 256))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(34, 34, 34)
.addComponent(lblHeaderText)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblLoginTypeText))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cbType, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 87, Short.MAX_VALUE)
.addComponent(btnEnter, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(19, 19, 19))
);
lblTopText.setBackground(new java.awt.Color(0, 0, 0));
lblTopText.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
lblTopText.setForeground(new java.awt.Color(255, 255, 255));
lblTopText.setText("SGMS");
lblIcon.setBackground(new java.awt.Color(51, 51, 255));
lblIcon.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
lblIcon.setForeground(new java.awt.Color(255, 255, 51));
lblIcon.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\logo.png")); // NOI18N
lblExit.setIcon(new javax.swing.ImageIcon("C:\\Users\\sniper\\Documents\\NetBeansProjects\\SDMS\\exit.png")); // NOI18N
lblExit.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
lblExit.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblExitMouseClicked(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
lblExitMouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
lblExitMouseExited(evt);
}
});
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.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(lblIcon)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblTopText)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblExit)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(6, 6, 6)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblTopText)
.addComponent(lblIcon)
.addComponent(lblExit))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void lblExitMouseClicked(java.awt.event.MouseEvent evt) {
// EXIT BUTTON
System.exit(0);
}
private void lblExitMouseEntered(java.awt.event.MouseEvent evt) {
// MOUSEOVER ICON CHANGE
lblExit.setIcon(new ImageIcon("exit_hover.png"));
}
private void lblExitMouseExited(java.awt.event.MouseEvent evt) {
// MOUSE EXIT ICON CHANGE
lblExit.setIcon(new ImageIcon("exit.png"));
}
private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {
// FOR MOVEMENT OF JFRAME
int x = evt.getXOnScreen();
int y = evt.getYOnScreen();
this.setLocation(x - xMouse,y - yMouse);
}
private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {
// Saving mouse to start from frames 0,0 position
xMouse = evt.getX();
yMouse = evt.getY();
}
private void txtUsernameMouseEntered(java.awt.event.MouseEvent evt) {
txtUsername.setBackground(Color.GRAY);
}
private void txtUsernameMouseExited(java.awt.event.MouseEvent evt) {
txtUsername.setBackground(Color.BLACK);
}
private void txtPasswordMouseEntered(java.awt.event.MouseEvent evt) {
txtPassword.setBackground(Color.GRAY);
}
private void txtPasswordMouseExited(java.awt.event.MouseEvent evt) {
txtPassword.setBackground(Color.BLACK);
}
private void btnEnterMouseEntered(java.awt.event.MouseEvent evt) {
// Setting Icon on hover
btnEnter.setIcon(new ImageIcon("enter_hover.png"));
}
private void btnEnterMouseExited(java.awt.event.MouseEvent evt) {
// Setting icon on hover off
btnEnter.setIcon(new ImageIcon("enter.png"));
}
private void btnEnterMouseClicked(java.awt.event.MouseEvent evt) {
// LOGIN CODE HERE
String sql = "select * from ROOT.ADMINLOGIN where username=? and password=?";
try
{
PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, txtUsername.getText());
ps.setString(2, txtPassword.getText());
ResultSet rs = ps.executeQuery();
if(rs.next())
{
JOptionPane.showMessageDialog(this,"SUCCESSFULL");
}
else
{
JOptionPane.showMessageDialog(this,"WRONG");
}
}
catch (Exception e)
{
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(mainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new mainFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel btnEnter;
private javax.swing.JComboBox<String> cbType;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel lblExit;
private javax.swing.JLabel lblHeaderText;
private javax.swing.JLabel lblIcon;
private javax.swing.JLabel lblLoginTypeText;
private javax.swing.JLabel lblTopText;
private javax.swing.JPasswordField txtPassword;
private javax.swing.JTextField txtUsername;
// End of variables declaration
}
CODE:DBConnection.java
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author sniper
*/
public class DBConnection {
private Connection DBConnection;
public Connection connect()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("CONNECTION DONE!");
}
catch(ClassNotFoundException cnfe)
{
System.out.println("FAILED CONNECTION >> " + cnfe);
}
String url = "jdbc:derby://localhost:1527/JavaDB;create=true";
try{
DBConnection = (Connection) DriverManager.getConnection(url, "root", "toor");
System.out.println("Database Connected");
}
catch(SQLException se)
{
System.out.println("No Database >> " + se);
}
return DBConnection;
}
}
有关如何让它再次运作的任何建议? 包含图片。
答案 0 :(得分:2)
您正在连接到Derby,并尝试将其转换为com.mysql.jdbc.Connection
(这是MySQL驱动程序的一部分,而不是Derby),这当然不会起作用。将import com.mysql.jdbc.Connection
替换为import java.sql.Connection
,同样适用于import com.mysql.jdbc.PreparedStatement
,将其替换为import java.sql.PreparedStatement
。
您几乎不必转换为特定于驱动程序的类,而是始终尝试使用JDBC API接口。
答案 1 :(得分:-1)
mysql连接链接:jdbc:mysql:// localhost:3306 / databansename