none
存取MySql資料庫時,時常一下有一下沒有(已解決,謝謝各位) RRS feed

  • 問題

  • 各位前輩好,最近在寫資料庫的時候發現解決不了的問題,

    想請教有無辦法解決。

    說明一下,

    我寫了一個程式,裡面很簡單,

    select如果有資料就更新UpdateTime,如果沒資料就新增。

    程式裡面有參考MySql.Data。

    using MySql.Data.MySqlClient;

    if(this.SelectThenIfExist()) { this.Update(); } else { this.Insert(); }


    在測試環境上,此程式沒什麼問題,

    就只會看到一筆資料一直更新UpdateTime。

    但是換到正式的環境的時候,

    就會看到一直新增資料與更新時間都有在動作,

    換句話說就是select的時候常常一下撈的到資料,一下撈不到資料。

    我想請問有沒有前輩有類似的情況,以及如何解決,謝謝。


    • 已編輯 笨嘎嘎 2014年12月8日 上午 03:19
    2014年12月3日 上午 09:51

解答

  • 回頭報告問題所在。

    寫資料庫時,因為我個人寫法的問題導致同一時間會建立多條資料庫連線,

    所以有些連線過多時,會被踢掉,有些不會,

    才會導致有時更新,有時新增。

    後來經過一些測試才發現這問題,換了一個寫法後就沒問題了。

    以上。

    謝謝所有看過與回答過的前輩,謝謝。



    • 已編輯 笨嘎嘎 2014年12月8日 上午 03:19
    • 已標示為解答 笨嘎嘎 2014年12月23日 上午 01:43
    2014年12月8日 上午 03:19

所有回覆

  • 那要問你 SelectThenIfExist() 是怎麼寫的。

    多人環境的處理和單人環境還是有差....


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年12月3日 上午 09:55
    版主
  • 不好意思,可以請小朱大稍為解釋一下嗎?

    ====

    SelectThenIfExist()裡面很簡單就只有

    SELECT testcol FROM TestDb.TestTable WHERE testcol='TestValue'

    而已。

    SELECT後,存在就給我字串(TestValue),不存在就給我null,

    以此判斷回傳true或false。

    ===

    因為要去接小孩,所以可能無法立刻回應,請見諒



    • 已編輯 笨嘎嘎 2014年12月3日 上午 10:15
    2014年12月3日 上午 10:06
  • 資料被刪除了或是testcol的值被改成別的

    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    2014年12月3日 下午 03:31
  • Alex前輩你好,

    是我沒有說明的很詳細。

    ===

    測試程式用的資料庫是新的,專門給測試程式用,

    裡面資料表只有一個,所建立的資料也只有一筆,

    而且我程式內也沒用到多執行緒,也沒有多開程式,是單人環境。

    不太可能會有資料被刪除或修改的情況發生,而且我有再看著資料庫,

    的確是一直在新增資料與更新資料,在10秒內就新增了至少有3筆以上。

    是很簡單的一支程式一直向資料庫要資料、更新資料、新增資料。

    預期的情況是,只有剛開啟時,因為資料庫內沒有資料,所以第一次是建立,接下來全部都是更新,

    但情況完全不如預期。

    ===

    但因為那麼簡單的程式與步驟,還是時常select不到資料,一直新增,這是令我感到很疑惑的事情,

    我上網查了,也許是關鍵字不對或是這問題太詭異,查不太到資料。


    • 已編輯 笨嘎嘎 2014年12月4日 上午 12:43
    2014年12月4日 上午 12:41
  • 回頭報告問題所在。

    寫資料庫時,因為我個人寫法的問題導致同一時間會建立多條資料庫連線,

    所以有些連線過多時,會被踢掉,有些不會,

    才會導致有時更新,有時新增。

    後來經過一些測試才發現這問題,換了一個寫法後就沒問題了。

    以上。

    謝謝所有看過與回答過的前輩,謝謝。



    • 已編輯 笨嘎嘎 2014年12月8日 上午 03:19
    • 已標示為解答 笨嘎嘎 2014年12月23日 上午 01:43
    2014年12月8日 上午 03:19