【发布时间】:2021-03-01 02:06:02
【问题描述】:
我制作了一个简单的表单供用户输入客户数据,它获取文本字段中的数据并将其插入到我已经通过 Microsoft SQL Server Management Studio 18 运行的数据库中。数据库正在我的计算机上运行。我的代码的驱动程序部分有问题,它不断抛出异常。非常感谢对我做错的任何帮助。这是我每次运行程序并点击提交按钮时收到的以下消息:抛出异常:com.microsoft.sqlserver.jdbc.SQLServerDriver java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver 问题的完整堆栈跟踪: 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java.base/java.lang.Class.forName0(本机方法) 在 java.base/java.lang.Class.forName(Class.java:333) 在 DBFE2.actionPerformed(DBFE2.java:119) 在 java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) 在 java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) 在 java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) 在 java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) 在 java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) 在 java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) 在 java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) 在 java.desktop/java.awt.Component.processEvent(Component.java:6401) 在 java.desktop/java.awt.Container.processEvent(Container.java:2263) 在 java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) 在 java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) 在 java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) 在 java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) 在 java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) 在 java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) 在 java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) 在 java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) 在 java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) 在 java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:391) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) 在 java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) 在 java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:391) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 在 java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) 在 java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
package Assignments;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;//import all
import java.sql.*;//need this to make database connection
public class DataBaseFormExample extends JPanel implements ActionListener
{
private JLabel FirstNameLabel;
private JTextField FirstNameTextField;
private JLabel LastNameLabel;
private JTextField LastNameTextField;
private JLabel PhoneNumLabel;
private JTextField PhoneNumTextField;
private JLabel StreetAddressLabel;
private JTextField StreetAddressTextField;
private JLabel StateLabel;
private JTextField StateTextField;
private JLabel CityLabel;
private JTextField CityTextField;
private JLabel ZipLabel;
private JTextField ZipTextField;
private JLabel GenderLabel;
private JTextField GenderTextField;
private JLabel DOBLabel;
private JTextField DOBTextField;
private JLabel MaritalStatusLabel;
private JTextField MartialStatusTextField;
//constructor
public DataBaseFormExample()
{
//intializing components for form below
FirstNameLabel = new JLabel("Enter the first name of Customer below:");
FirstNameTextField = new JTextField("FirstName");
FirstNameTextField.setColumns(10);
LastNameLabel = new JLabel("Enter the first name of Customer below:");
LastNameTextField = new JTextField("LastName");
LastNameTextField.setColumns(10);
PhoneNumLabel = new JLabel("Enter the Phone Number of Customer below(EX:123-456-7890):");
PhoneNumTextField = new JTextField("123-456-7890");
PhoneNumTextField.setColumns(10);
StreetAddressLabel = new JLabel("Enter the street address of Customer below:");
StreetAddressTextField = new JTextField("123 easy street");
StreetAddressTextField.setColumns(10);
StateLabel = new JLabel("Enter the state of Customer below(EX:PA):");
StateTextField = new JTextField("PA");
StateTextField.setColumns(10);
CityLabel = new JLabel("Enter the city of Customer below(EX:Pittsburgh):");
CityTextField = new JTextField("Pittsburgh");
CityTextField.setColumns(10);
ZipLabel = new JLabel("Enter the zip of Customer below(EX:12345):");
ZipTextField = new JTextField("12345");
ZipTextField.setColumns(10);
GenderLabel = new JLabel("Enter the gender of Customer below(EX:M or F):");
GenderTextField = new JTextField("M");
GenderTextField.setColumns(10);
DOBLabel = new JLabel("Enter the DOB of Customer below(EX:12/03/5678):");
DOBTextField = new JTextField("12/34/2010");
DOBTextField.setColumns(10);
MaritalStatusLabel = new JLabel("Enter the martial status of Customer below(EX: Single / Married):");
MartialStatusTextField = new JTextField("Single");
MartialStatusTextField.setColumns(10);
JButton submitBTN = new JButton("Submit info");
submitBTN.addActionListener(this);
//add components to form
add(FirstNameLabel);
add(FirstNameTextField);
add(LastNameLabel);
add(LastNameTextField);
add(PhoneNumLabel);
add(PhoneNumTextField);
add(StreetAddressLabel);
add(StreetAddressTextField);
add(StateLabel);
add(StateTextField);
add(CityLabel);
add(CityTextField);
add(ZipLabel);
add(ZipTextField);
add(GenderLabel);
add(GenderTextField);
add(DOBLabel);
add(DOBTextField);
add(MaritalStatusLabel);
add(MartialStatusTextField);
add(submitBTN);
}
//driver method
public static void CreateAndShowContent()
{
//frame of calculator
JFrame window = new JFrame("Customer Information Input Form");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//closes when we click the red x
DataBaseFormExample content = new DataBaseFormExample ();
content.setOpaque(true);
window.setContentPane(content);
//size it to fit components
window.setSize(500,330);
//show it
window.setVisible(true);
}
//insert when the button submit is pressed
public void actionPerformed(ActionEvent e)
{
try
{
//try inserting data to database
String JDBC_DRIVER = "org.gjt.mm.mysql.Driver";
String DB_URL = "jdbc:mysql://localhost/Giant_Snail_Grocery";
String UserName = "username";
String UserPass = "password";
Connection conn = null;
Statement statement = null;
Class.forName(JDBC_DRIVER);
System.out.println("Class.forName(driver) accepted....");
conn = DriverManager.getConnection(DB_URL,UserName,UserPass);
System.out.println("Connection Made....");
statement = conn.createStatement();
System.out.println("Statement object created from conn....");
//String sql = "INSERT INTO CUSTOMER " +"VALUES('Todd','Packer','724-345-9876','134 west end road','PA','Pittsburgh','12356','M','12/21/1995','married');";
String sql2 = "INSERT INTO CUSTOMER " + "VALUES("+ FirstNameTextField.getText() + " , " + LastNameTextField.getText() + ", " + PhoneNumTextField.getText() + ", " + StreetAddressTextField.getText() + ", " + StateTextField.getText() + ", " + CityTextField.getText() + ", " + ZipTextField.getText() + "," + GenderTextField.getText() + ", " + DOBTextField.getText() + ", " + MartialStatusTextField.getText() + ");";
statement.executeUpdate(sql2);
System.out.println("Insert successful to database....");
if(statement != null)
{
conn.close();
System.out.println("Connection closed to database....");
}
}
catch(Exception p)
{
//catch any exceptions
System.out.println("Exception thrown: " + p.getMessage());
}
}
//Main
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
CreateAndShowContent();
}
});
}
}
【问题讨论】:
-
这能回答你的问题吗? Error connecting to database: (using class org.gjt.mm.mysql.Driver)。还请提供有关您收到的错误消息的更多详细信息。
-
不,这并没有帮助我下载正确的连接器并将其安装在计算机上以及更新我的 java SDK,但这并没有解决问题。
-
JDBC驱动的jar文件需要added to the classpath
标签: java sql sql-server