Java 我能';t插入MsAccess数据库
我有以下UI 但是,我无法将任何数据插入到Java 我能';t插入MsAccess数据库,java,sql,ms-access,Java,Sql,Ms Access,我有以下UI 但是,我无法将任何数据插入到ms access数据库中。第一行是通过ms access数据库 我不知道我的代码出了什么问题,看起来他们都做得很好 private void doSimpan(String idnya, String namanya,String alamatnya,String teleponnya,String emailnya,String passwordnya,String rolesnya) { try { Strin
ms access数据库中。第一行是通过ms access数据库
我不知道我的代码出了什么问题,看起来他们都做得很好
private void doSimpan(String idnya, String namanya,String alamatnya,String teleponnya,String emailnya,String passwordnya,String rolesnya) {
try {
String query = "INSERT INTO MsEmployee (EmployeeID, EmployeeName, EmployeeAddress, EmployeePhone, EmployeeEmail, EmployeePassword, EmployeeRole)VALUES ('"+idnya+"','"+namanya+"','"+alamatnya+"','"+teleponnya+"','"+emailnya+"','"+passwordnya+"','"+rolesnya+"')";
connect.executeQuery(query);
fillTable();
cmd.printSuccess("Master Employee", namanya+" saved successfully");
} catch (Exception e) {
}
}
下面是execQuery
方法
private statement st;
public void executeQuery(String query)
{
try {
st.executeUpdate(query);
} catch (SQLException ex) {
System.out.println("Error: " +ex);
}
}
public Boolean printAsk(String title, String text)
{
if(JOptionPane.showConfirmDialog(null, text, title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
return true;
}
else
{
return false;
}
}
private Boolean isValid(String name,String address,String phone,String email,String password) {
if(name.equals("") || address.equals("") || phone.equals("") || email.equals("") || password.equals(""))
{
return false;
}
else if(val.isNumeric(phone) || !email.contains("@") && !email.endsWith(".com"))
{
return false;
}
else
{
return true;
}
}
这是我的printAsk()
方法
private statement st;
public void executeQuery(String query)
{
try {
st.executeUpdate(query);
} catch (SQLException ex) {
System.out.println("Error: " +ex);
}
}
public Boolean printAsk(String title, String text)
{
if(JOptionPane.showConfirmDialog(null, text, title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
return true;
}
else
{
return false;
}
}
private Boolean isValid(String name,String address,String phone,String email,String password) {
if(name.equals("") || address.equals("") || phone.equals("") || email.equals("") || password.equals(""))
{
return false;
}
else if(val.isNumeric(phone) || !email.contains("@") && !email.endsWith(".com"))
{
return false;
}
else
{
return true;
}
}
这是我的isValid()
方法
private statement st;
public void executeQuery(String query)
{
try {
st.executeUpdate(query);
} catch (SQLException ex) {
System.out.println("Error: " +ex);
}
}
public Boolean printAsk(String title, String text)
{
if(JOptionPane.showConfirmDialog(null, text, title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
return true;
}
else
{
return false;
}
}
private Boolean isValid(String name,String address,String phone,String email,String password) {
if(name.equals("") || address.equals("") || phone.equals("") || email.equals("") || password.equals(""))
{
return false;
}
else if(val.isNumeric(phone) || !email.contains("@") && !email.endsWith(".com"))
{
return false;
}
else
{
return true;
}
}
这是我的保存按钮上的代码
//save
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
String idnya = jTextField1.getText();
String namanya = jTextField2.getText();
String alamatnya = jTextArea1.getText();
String teleponnya = jTextField3.getText();
String emailnya = jTextField4.getText();
String passwordnya = new String(jPasswordField1.getPassword());
String rolesnya = jComboBox2.getSelectedItem().toString();
if(status==1) //to insert
{
if(isValid(namanya, idnya, teleponnya, emailnya, passwordnya))
{
if(cmd.printAsk("Master Employee", namanya+" will be entered, continue ?"))
{
doSimpan(idnya, namanya, alamatnya, teleponnya, emailnya, passwordnya, rolesnya);
fillTable();
defaultControl(false,false);
crudButton(true);
}
}
else
{
cmd.printFail("Master Employee", "all field must be filled");
}
}
else if (status==2)//to update
{
}
}
我哪里出错了?
我获得了“nencor已成功保存”,但在ms access数据库中找不到任何名为nencor
的员工
我的Connect
构造函数
public Connect() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=TIFProject.mdb");
st = con.createStatement(1004, 1008);
} catch (Exception ex) {
System.out.println("Database Error" + ex);
}
}
你必须把它添加到你的程序中
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
connection = DriverManager.getConnection(databaseURL ,"",""); //databaseURL is url for your db
st=connection.createStatement();
发生错误的原因是您没有提及并初始化数据库交互所需的变量。请在execQuery
方法中写入上述三行,然后单击“完成”
private statement st;
public void executeQuery(String query)
{
try {
st.executeUpdate(query);
} catch (SQLException ex) {
System.out.println("Error: " +ex);
}
}
您是否初始化了变量“st”我在Connect
classError上设置了它,这取决于它的设置方式,很可能在没有凭据的情况下使用jdbc odbc桥。@jwenting我已经更新了线程。如果需要更多信息,请告诉我。我不知道该怎么办,因为程序没有返回任何错误message@Cignitor您正在connect()
构造函数中定义语句,并在execQuery
中再次初始化它。??删除此语句private语句st
在execQuery
方法之前。@VimalBera我已经对那一行进行了评论,但是,那一行没有效果。我仍然想知道我的代码出了什么问题。1) 使用真实的数据库,驾驶人的驾驶不受支持,并且已经持续了十年。2) 检查您的自动提交设置,这是此类问题的常见原因。什么是初始化?它是否像私有语句st=null
?