使用Java数据库连接从MS Access表中删除指定的记录

问题描述:

我试图从表中更新或删除单个特定记录,说
(“更新studentTable集名称='Shekhar'WHERE'卷号= 116'”) ;
我应该只获得卷号116更新为名称“Shekhar”的记录,但是我将获得更新名称为“Shekhar”的所有记录。 删除语句会发生同样的情况,并且所有记录都将被删除,应该是该特定记录。 我觉得这是一个语法错误,因为sql语句只读取更新或删除语句,但忽略WHERE子句。我曾尝试在不同的地方放置'引号',但后来我得到语法错误,说操作员失踪。
表的名称是“studentTable”,卷号是主键 数据源名称是学生。
下面是确切的代码..请告诉我应该如何根据要求更正代码。使用Java数据库连接从MS Access表中删除指定的记录

import java.util.*; 
import java.sql.*; 
import java.io.*; 

public class StudentDbConnect 
{ 
public static void main(String[] args) 
{ 
    try 
    { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection connectDb = DriverManager.getConnection("jdbc:odbc:student"); 
     Statement view = connectDb.createStatement(); 
     //view.executeUpdate("INSERT into studentTable values('Tauqeer','116','FET','CSE')"); 
     //view.executeUpdate("INSERT into studentTable values('Tauqeer2','117','FET','CSE')"); 
     //view.executeUpdate("INSERT into studentTable values('Tauqeer3','118','FET','CSE')"); 
     //view.executeUpdate("INSERT into studentTable values('Tauqeer4','119','FET','CSE')"); 
     //view.executeUpdate("INSERT into studentTable values('Tauqeer5','120','FET','CSE')"); 
     //view.executeUpdate("UPDATE studentTable set Name ='Shekhar' WHERE 'Roll Number = 116'"); 
     //view.executeUpdate("DELETE FROM studentTable WHERE 'Roll Number = 116'"); 
     view.executeQuery("SELECT * FROM studentTable"); 
     ResultSet result = view.getResultSet(); 

     while(result.next()) 
     { 
      System.out.println("Name = " +result.getString(1) + " Roll Number = " +result.getInt(2)+" Department = " +result.getString(3)+" Branch = "+result.getString(4)); 
     } 
     view.close(); 
     connectDb.close(); 
    } 
    catch(Exception raisedException) 
    { 
     System.out.println("Exception " +raisedException); 
    } 
} 

}

你的WHERE子句

... WHERE 'Roll Number = 116' 

的格式不正确。如果Roll Number是一个文本列那么它应该是

... WHERE [Roll Number] = '116' 

如果Roll Number是数字列,那么它应该是

... WHERE [Roll Number] = 116 
+0

感谢您回复,但'view.executeUpdate(“UPDATE studentTable设置名称=” Shekhar'WHERE [Roll Number] ='116'“);'这将创建_Exception java.sql.SQLException:[Microsoft] [ODBC Microsoft Access Driver]标准表达式中的数据类型不匹配。您可以查看整个语句行? – appstauq 2015-02-23 19:41:19

+0

如果[Roll Number]实际上是一个数字列(尽管您的INSERT语句提示了什么),那么您需要删除该值周围的单引号:'... WHERE [Roll Number] = 116'。 – 2015-02-23 19:59:25

+0

谢谢!!我也想知道为什么它给了数据类型不匹配..我刚刚开始数据库。我会小心这种愚蠢的错误。 – appstauq 2015-02-23 20:05:28