使用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
感谢您回复,但'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
如果[Roll Number]实际上是一个数字列(尽管您的INSERT语句提示了什么),那么您需要删除该值周围的单引号:'... WHERE [Roll Number] = 116'。 – 2015-02-23 19:59:25
谢谢!!我也想知道为什么它给了数据类型不匹配..我刚刚开始数据库。我会小心这种愚蠢的错误。 – appstauq 2015-02-23 20:05:28