您的SQL語法錯誤,檢查手冊,對應於你的MySQL語法的正確使用伺服器版本位於第1行近'其中ID
=
'71201'
語法錯誤,你看看ID是不是主鍵,如果是主鍵的話,那就是主外鍵關聯所以刪除失敗!
2. Java jdbc刪除數據表中的記錄
Connection con=DriverManager.getConnection("jdbc:odbc:成績資料庫"); //添加時"數據源名"
con.setAutoCommit(false);
Statement st1=con.createStatement();
st="delete from scoretable where no='A001'";
System.out.println(st);
st1.executeUpdate(st); //刪除數據的執行
con.commit();
這樣再試試呢。感覺你的問題很奇怪。。。
3. java資料庫刪除操作
簡單實現代碼如下:
EmployeeDao.java
//刪除數據
public boolean deleteEmployeeById(int id){
boolean result = false;
try{
con = DBCon.getConn();
String sql = "delete from tb_employee where id=?";
pstmt = (PreparedStatement) con.prepareStatement(sql);
pstmt.setInt(1, id);
int i = pstmt.executeUpdate();
if(i == 1)
result = true;
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(pstmt != null){
pstmt.close();
}
}catch(Exception e){
e.printStackTrace();
}
try{
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return result;
}
TestSql2.java
package com.sql.test;
import com.sql..EmployeeDao;
public class TestSql02 {
public static void main(String[] args){
boolean result = EmployeeDao.getInstance().deleteEmployeeById(1);
if(result == true){
System.out.println("刪除成功!");
}else{
System.out.println("刪除失敗!");
}
}
}
4. Java怎麼從界面上刪除資料庫里的內容
使用JDBC
步驟:
1.注冊驅動 Class.forName("com.mysql.jdbc.Driver");
2.建立連接 Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8","用戶名","密碼");
3.創建執行語句 PreparedStatement ps=conn.prepareStatement(sql);
4.執行得到結果集 ResultSet rs=ps.executeQuery();// 查詢語句
ResultSet rs=ps.executeUpdate();// 更新語句
5.處理結果集(遍歷結果集)
while (rs.next()) {rs.getString("表欄位名");}
6.關閉結果集、關閉連接
rs.close()、conn.close();
5. JAVA在界面上如何實現資料庫 表的刪除\添加數據
建議你找一本java方面書,注意裡面有介紹jdbc的(Java DateBase Connect即Java資料庫鏈接)。
下面我寫一些鏈接代碼,盡量寫詳細點,初次接觸沒有書本理論作鋪墊的話肯定不太容易理解。下面以sqlserver資料庫為例進行說明,使用不同的資料庫只是在方法的參數上有微小的不同。
每一步:注冊資料庫驅動
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//從類路徑中載入驅動,參數為SQLServer的驅動類完整包名
第二步:獲取資料庫連接
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=資料庫名","用戶名","密碼")//代碼中的中文直接替換為你的資料庫的相關值
第三步:獲取 Statement對像用於執行SQL語句
Statement sta=conn.createStatement();
第四步:使用Statement對像執行SQL語句
ResultSet rs=sta.executeUpdate("SQL 表數據刪除/添加語句");//若對表進行插入刪除操作則使用此語句,至此便結束。否則使用下述語句
ResultSet rs=sta.executeQuery("SQL查詢語句");//表查詢操作
第五步:遍歷結果集,對結表查詢結果中的數據集進行操作
while(rs.next()){
System.out.println(rs.getObject(1));//輸出表中的第一列數據
System.out.println(rs.getObject(2));輸出表中的每二列數據
........}
第六步:關閉資料庫連接
rs.close();
sta.close;
conn.close()//關閉步驟必須先關閉結果集對象再關閉Statement對像,最後關閉Connection對像
以上便是對資料庫中表進行操作的JAVA語句,無論對java web程序還是對java應用程序都有效!當然這裡面還需要包括一些容錯處理捕獲異常,同時導入資料庫的驅動包。
我這兒還有些相關教學視頻,方便我話可以轉給你,你也可以去電驢上下。
6. 用JAVA更改刪除添加資料庫中的表操作,尋高手更改程序
先用jdbc訪問資料庫:(先下載jdbc驅動,mysql-connector-java-5.0.8.zip這是MYSQL的驅動,解壓後獲取mysql-connector-java-5.0.8.jar,將這個jar拉到你的工程中,你可以到網上下載oracle,db2等的驅動)
訪問資料庫的程序:
static{
String driverName =
"oracle.jdbc.driver.OracleDriver";
try{
Class.forName(driverName);
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection con = null;
String url =
"jdbc:oracle:thin:@"+
"資料庫名稱";
String user = "資料庫用戶名";
String pwd = "資料庫用戶密碼";
try{
con =
DriverManager.getConnection(url,user,pwd);
}catch(Exception e){
e.printStackTrace();
}
return con;
}
獲得con以後,你還得獲取資料庫操作對象:
PreparedStatement ps = null;
ps = con.prepareStatement();
然後你可以寫sql語句了,比如寫的sql語句是String sql=".....";
然後用ps.update,ps.delete,ps.insert等方法來對資料庫的數據進行操作。
這是jdbc的做法,你也可以使用hibernate啊ibatis等來訪問資料庫。具體你可以去查相關資料。
美女!我的郵箱是:[email protected]!有什麼事可以聯系我!
7. javaweb:資料庫表的刪除語句
使用拼接字元串就行:
String sql = "DELETE FROM student WHERE id = '" + id + "'";
但是上述方式存在sql注入風險,
可以使用
perstmt = conn.prepareStatement("DELETE FROM student WHERE id = ?");
perstmt.setString(1,id);
8. java如何實現對數據表裡面的數據刪除(最好給個具體代碼範例)
連接資料庫
public class DBManager {
//定義資料庫連接的URL
private static final String URL="jdbc:sqlserver://localhost:1433;database=j1105";
//定義資料庫的用戶名
private static final String USERNAME = "sa";
//定義資料庫密碼
private static final String PASSWORD = "sa";
//定義一個連接的引用,使用單例模式
private static Connection conn = null;
//使用靜態塊來注冊驅動
//類載入時自動執行代碼塊
static {
//反射com.microsoft.sqlserver.jdbc.SQLServerDriver.class
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//獲得連接
//在程序使用過程中始終只有1個對象存在
//使用單例模式來給Connection賦值
public static Connection getConnection(){
if(conn == null){
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
/**
* 關閉的一些操作 , 優化
* @param conn
* @param stat
* @param rs
*/
public static void close(Connection conn,Statement stat,ResultSet rs){
try{
if(conn != null){
conn.close();
}
if(stat != null){
stat.close();
}
if(rs != null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
/**
* 重寫上面的方法,在只有2個參數的情況下關閉
* @param conn
* @param stat
*/
public static void close(Connection conn,Statement stat){
try{
if(conn != null){
conn.close();
}
if(stat != null){
stat.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
public static void main(String[] args){
Connection conn = DBManager .getConnection();
System.out.println(conn);
}
}
介面
public interface IStudentDao {
public void deleteStudent(int xh);
}
實現
public class StudentDAOimpl implements IStudentDao {
public void deleteStudent(int xh) {
try{
String sql = "delete from tb_student where xh = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, xh);
ps.executeUpdate();
System.out.println("成功刪除");
}catch(SQLException e){
e.printStackTrace();
}
}
}
9. Java中刪除問題的邏輯不會怎麼辦呢
對數據進行邏輯刪除,一般存在以下原因:
防止數據誤刪除,不能找回數據;
這些數據還具有一定的商業價值,比如用戶的注冊信息;
雖然這些數據可以刪除,但是這些數據還有關聯數據,這些關聯數據不能刪除。
資料庫表的數據冗餘,導致查詢緩慢;
寫sql進行數據處理時需要排除那些已經邏輯刪除的數據,這就會導致sql復雜,容易出錯,特別是涉及多表查詢時;
進行邏輯刪除時,還需要考慮與之相關的數據怎麼處理;
還有,如果數據表的某個欄位要求唯一,並強制約束,比如用戶表中的登錄用戶名欄位,設計為邏輯刪除的話,一旦有新的同用戶名記錄就無法插入。但如果不將該欄位設置為唯一性約束的,那麼在每次插入數據的時候,都需先進行一次查詢,看看有無未(邏輯)刪除的同名記錄存在,低效率是一回事,而且在高並發的系統中,很難保證其正確性。
對數據進行邏輯刪除,可以保證數據的安全性和完整性。但是,邏輯刪除也會帶來的一些問題:
首先要思考要不要用邏輯刪除
這一點很重要,不要盲目使用邏輯刪除,首先要看是否有必要採用邏輯刪除。因為採用物理刪除的優勢是顯而易見的,不會有歷史數據,數據間的關聯關系也不會出錯,還能節省資料庫空間。採用物理刪除,業務處理起來很清爽。所以如果沒有必要,那麼可以優先採用物理刪除,從而避免邏輯刪除引入的麻煩。比如說本人這次碰到的情況,實際上項目中並不需要邏輯刪除,沒有這方面需求,這些歷史數據也沒什麼價值。所以這個問題就是當初的開發人員盲目採用了邏輯刪除,而沒有考慮周全導致的。基於這個情況,直接修改為物理刪除解決問題。
當然,某些情況下必須使用邏輯刪除,尤其是在現在越來越注重數據價值的環境下。比如歷史數據有價值,項目對歷史數據有存檔要求,或者需要歷史數據進行恢復等, 這些情況就必須採用邏輯刪除了。
那麼邏輯刪除該採用怎樣的設計呢?
方案1:增加delete_token欄位(需要設置默認值,如「defaultToken」),與原來的unique key 組成聯合主鍵.
delete_token欄位作用:用來標識該條記錄被刪除,而不是通過原來的status或enabled欄位來區分該記錄是否已刪除。
比如本文開頭我碰到的情況,可以增加一個欄位delete_token欄位,與原來的欄位A組成聯合主鍵。比如刪除表T中數據記錄1時,delete_token可以更新為該條記錄的主鍵id或者生成的唯一隨機值(如UUID),用該方案可解決不能插入已刪除數據的問題。同時也要注意,表T的關聯關系表也需要進行類似的處理。
優點:不需要引入新表
缺點:若業務量較大或增刪頻繁,那麼數據增長速度會很快,導致一張表中數據量太大,對表的操作效率會降低。
結論:適用於數據量較小、增刪不頻繁的場景。
方案2:增加備份表(刪除記錄表)
每張表都設計一張對應的備份表,用於存儲刪除的數據。表結構可以根據實際需要在原表基礎上增加刪除時間、刪除操作者之類的欄位。這樣在刪除數據時,對於原表,相當於是物理刪除,然後再備份表中插入新的記錄。注意:關聯關系表也需要備份表。
優點:跟物理刪除類似,不會有數據沖突的問題。同時也滿足了邏輯刪除的需求。將在用的業務數據與歷史數據區分開,業務結構更清晰。
缺點:需要邏輯刪除的數據都要有對應備份表。