乙個 符號引發的血案 Access資料庫無法更新

2021-09-30 05:19:57 字數 1853 閱讀 2887

摘要:本文將討論乙個access資料庫不能更新的問題,最後作者找到了引發血案的罪魁禍首——@符號,原因請看文內詳解。

在昨天下午就遇到了這個問題,但是除錯一直都能成功,但是資料卻總是沒有更新。在網上搜尋了下,這方面的東西還是挺少的,可能是因為access資料庫用得少,或者是在更新的時候使大多人不用引數方式的原因吧,今天我把我的經歷記錄一下吧。以後也可以做參考。

原來有誤的**:

");8:  oledbparameter parameters = ;

13:  parameters[0].value = model.newsid;

14:  parameters[1].value = model.newstitle;

15:  parameters[2].value = model.newscontent;

16:  parameters[3].value = model.newsreporter;

17:18:  return dbhelperoledb.executesql(strsql.tostring(), parameters);

因為這個**是使用動軟**生成器自動生成的,所以我可以肯定**是無誤的,可是問題出在我修改了引數,自動生成的**裡包含可以更新id,我資料庫

裡的id是自動增長的,所以不能更新,我也就直接刪除了id,變成上面的錯誤**。就這樣,問題就出來啦,不管我如何除錯,都無濟於事,始終不能更新到資料庫。

在琢磨很久之後,換成更加不同的方式來更新資料庫,也就是不使用@傳引數,直接使用++方式的**。

++方式的**:

1:  string strsql;

2:  strsql="update news_table set newstitle='"+model.newstitle+"',newscontent='"+model.newscontent+"',newsreporter='"+

3:          model.newsreporter+"'  where newsid="+model.newsid;

4:  return dbhelperoledb.executesql(strsql);

使用這種方式可以很順利的更新資料庫裡的資料。

這樣的結果讓我很抓狂。我不知道該怎麼辦好,我想不通為什麼傳引數的方式不行,但是直接寫的方式就可以。接著就是我瘋狂地在google上搜尋的這方面的資料,但是搜到這方面和我同樣的問題的日誌不多。但是還是有解決這個問題的解決方案,那就是引數賦值順序和傳入的時候一致,下面貼出正確的**:

正確傳引數的**:

");  

7:     

8:  oledbparameter parameters = ; 

13:    

14:  parameters[0].value = model.newstitle; 

15:  parameters[1].value = model.newscontent; 

16:  parameters[2].value = model.newsreporter; 

17:  parameters[3].value = model.newsid;            

18:    

19:  return dbhelperoledb.executesql(strsql.tostring(), parameters);

只是引數順序改變了一下就可以正常更新access資料庫啦,也許這應該是access的乙個bug吧,也許access本來就如此,比mssql語法要嚴格。

總結

access和mssql還是有不同的,不能夠一味的按照mssql的方式去解決access上的問題,只是有一些相同。

**:

乙個memset引發的血案

前幾天做了一道bst題,提交了幾次都是wa,今天抽空拿了出來仔細瞧瞧總算被我發現禍頭根源.總結原因還在於自己對memset不太了解,以前用對估計也是瞎貓撞見死耗子 memset的介紹 void memset void buffer,int ch,size t count buffer 指向某段記憶體...

乙個分號引發的「血案」

再多的表情也無法詮釋我現在的心情!a b for matrices 這是很水的一道題,然而卻整整折騰了我2個多小時。從晚上6點多開始,花了沒幾分鐘就把 敲好了,可是資料一測,竟然不對,然後就開始找問題,找了很久,我竟然都還沒看出問題在哪,越找心裡越不爽,這麼做明明對的呀,一執行怎麼就錯了呢?一直到了...

乙個strlen引發的血案

部分測試 原來是這樣的 int decryptrelation aesdecryptfromfiletobytes const std string in file path,unsigned char out data,const char aes encrypt key,int in data ...