使用 java 数据库连接从 MS Access table 删除指定记录
Delete specified record from MS Access table using java database connection
我正在尝试更新或删除 table 中的单个特定记录,比如
("UPDATE studentTable set Name ='Shekhar' WHERE 'Roll Number = 116'");
我应该只获取 roll number 为 116 的记录更新为 Name "Shekhar",但我将所有记录更新为 Name "Shekhar"。
Delete 语句也会发生同样的事情,并且所有记录都将被删除,因为它应该是该特定记录。
我觉得这是一个语法错误,因为 sql 语句只读取更新或删除语句但忽略了 WHERE 子句。我曾尝试将 'inverted comma' 放在不同的位置,但随后出现语法错误,提示缺少运算符..
table 的名称是 "studentTable",卷号是主键
数据源名称是学生。
这是确切的代码。请告诉我如何根据要求更正代码。
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
我正在尝试更新或删除 table 中的单个特定记录,比如
("UPDATE studentTable set Name ='Shekhar' WHERE 'Roll Number = 116'");
我应该只获取 roll number 为 116 的记录更新为 Name "Shekhar",但我将所有记录更新为 Name "Shekhar"。
Delete 语句也会发生同样的事情,并且所有记录都将被删除,因为它应该是该特定记录。
我觉得这是一个语法错误,因为 sql 语句只读取更新或删除语句但忽略了 WHERE 子句。我曾尝试将 'inverted comma' 放在不同的位置,但随后出现语法错误,提示缺少运算符..
table 的名称是 "studentTable",卷号是主键
数据源名称是学生。
这是确切的代码。请告诉我如何根据要求更正代码。
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