日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Access數(shù)據(jù)庫(kù)無(wú)法更新的解決辦法

Access數(shù)據(jù)庫(kù)無(wú)法更新的解決辦法:

原來(lái)有誤的代碼:

 
 
 
  1.  StringBuilder strSql = new StringBuilder();
  2.   strSql.Append("update news_Table set ");
  3.   strSql.Append("NewsTitle=@NewsTitle,");
  4.   strSql.Append("NewsContent=@NewsContent,");
  5.   strSql.Append("NewsReporter=@NewsReporter");
  6.   strSql.Append(" where NewsID=@NewsID ");
  7.   OleDbParameter[] parameters = {
  8.   new OleDbParameter("@NewsID", OleDbType.Integer,4),
  9.   new OleDbParameter("@NewsTitle", OleDbType.VarChar),
  10.   new OleDbParameter("@NewsContent", OleDbType.VarChar),
  11.   new OleDbParameter("@NewsReporter", OleDbType.VarChar)};
  12.   parameters[0].Value = model.NewsID;
  13.   parameters[1].Value = model.NewsTitle;
  14.   parameters[2].Value = model.NewsContent;
  15.   parameters[3].Value = model.NewsReporter;
  16.   return DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);

因?yàn)檫@個(gè)代碼是使用動(dòng)軟代碼生成器自動(dòng)生成的,所以我可以肯定代碼是無(wú)誤的,可是問(wèn)題出在我修改了參數(shù),自動(dòng)生成的代碼里包含可以更新ID,我數(shù)據(jù)庫(kù)里的ID是自動(dòng)增長(zhǎng)的,所以不能更新,我也就直接刪除了ID,變成上面的錯(cuò)誤代碼。就這樣,問(wèn)題就出來(lái)啦,不管我如何調(diào)試,都無(wú)濟(jì)于事,始終不能更新到數(shù)據(jù)庫(kù)。

在琢磨很久之后,換成更加不同的方式來(lái)更新數(shù)據(jù)庫(kù),也就是不使用@傳參數(shù),直接使用++方式的代碼。

++方式的代碼:

 
 
 
  1.  string strSql;
  2.   strSql="update news_Table
  3.   set NewsTitle='"+model.NewsTitle+"',NewsContent='"+model.NewsContent+"',NewsReporter='"+
  4.   model.NewsReporter+"' where NewsID="+model.NewsID;
  5.   return DbHelperOleDb.ExecuteSql(strSql);

使用這種方式可以很順利的更新數(shù)據(jù)庫(kù)里的數(shù)據(jù)。

這樣的結(jié)果讓我很抓狂。我不知道該怎么辦好,我想不通為什么傳參數(shù)的方式不行,但是直接寫(xiě)的方式就可以。接著就是我瘋狂地在Google上搜索的這方面的資料,但是搜到這方面和我同樣的問(wèn)題的日志不多。但是還是有解決這個(gè)問(wèn)題的解決方案,那就是參數(shù)賦值順序和傳入的時(shí)候一致,下面貼出正確的代碼:

正確傳參數(shù)的代碼:

 
 
 
  1.  StringBuilder strSql = new StringBuilder();
  2.   strSql.Append("update news_Table set ");
  3.   strSql.Append("NewsTitle=@NewsTitle,");
  4.   strSql.Append("NewsContent=@NewsContent,");
  5.   strSql.Append("NewsReporter=@NewsReporter");
  6.   strSql.Append(" where NewsID=@NewsID ");
  7.   OleDbParameter[] parameters = {
  8.   new OleDbParameter("@NewsTitle", OleDbType.VarChar),
  9.   new OleDbParameter("@NewsContent", OleDbType.VarChar),
  10.   new OleDbParameter("@NewsReporter", OleDbType.VarChar),
  11.   new OleDbParameter("@NewsID", OleDbType.Integer,4)};
  12.   parameters[0].Value = model.NewsTitle;
  13.   parameters[1].Value = model.NewsContent;
  14.   parameters[2].Value = model.NewsReporter;
  15.   parameters[3].Value = model.NewsID;
  16.   return DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);

只是參數(shù)順序改變了一下就可以正常更新Access數(shù)據(jù)庫(kù)啦,也許這應(yīng)該是Access的一個(gè)Bug吧,也許Access本來(lái)就如此,比MSSQL語(yǔ)法要嚴(yán)格。

總結(jié)

Access和MSSQL還是有不同的,不能夠一味的按照MSSQL的方式去解決Access上的問(wèn)題,只是有一些相同。通過(guò)上文中的介紹,大家在以后遇到類(lèi)似問(wèn)題,就能夠輕松解決了。


文章標(biāo)題:Access數(shù)據(jù)庫(kù)無(wú)法更新的解決辦法
轉(zhuǎn)載注明:http://www.5511xx.com/article/cdshhoh.html