none
[問題VB.NET2003+mysql]vb中把null加入database的問題???~緊急 RRS feed

  • 問題

  • 問題一):

    在vb中如何輸入null進database(mysql).....

    先假定mysql的field是可以存放null

    例如有2個textbox...

    而2個textbox都是用來接收數字的..即(0-9)

    如果要check這兩個textbox...

    if textbox1.text輸入是數字的話....then

    存入mysql中當然是該數字嘛

    elseif 如果textbox1中沒有輸入任何東西...應該即->null的話

    就將null直接存入mysql中....

    ----

    要將上面的條件轉成coding的話應該怎轉?

    這是我想的方法..可惜不可行吧

    先dim Detail_num1 as integer

    Detail_num1  = textbox1.text

    If Not Regex.Match(TextBox1.Text, "^[0-9]+$").Success Then
                Detail_num1 = 'null'<--應該怎去輸入呢?
            Else
                Detail_num1 = TextBox5.Text
            End If

    "update ("table") set vaule num = Detail_num1 where 條件"

     

    integer好像不可以裝null吧.......有vb有 isnull l嗎?

     

    ------------------------------------------------
    對不起喔~

    妳的要求我原存明白...坦白說我的原意是為了節省版位...
    不想太多繁碎的問題開太多的post...所以上一次多次修改問題
    本人對此表示抱歉.....

    本人一向少去論壇發問...經朋友的推薦來到這來問問題....盼望有能之士可以幫助我解決問題
    所以不大懂得這裡的版規....我會配合這裡的規則...希望各個網友能夠在這找到問題的解答
    如之前有對各網友造成不便....本人願意對妳們道歉....還請原諒....

     

    2006年8月14日 下午 04:56

解答

  • 前面不是寫了嗎?直接用 DBNull.Value

    ds.Tables("ntpg").Rows(i).Item("Muplay") = DBNull.Value

    字串本身不得為 DBNull.Value ,只有物件變數或資料庫能收。

    重點還包括你最後如何更新資料庫?

    是透過 xxxCommandBuilder 讓它自動更新還是自己下 UpdateCommand ?

    若是 xxxCommandBuilder ,設完 DBNull.Value 就不用管它,xxxCommandBuilder 會自己產生 UpdateCommand 來更新資料庫。

    若是自己下 UpdateCommand ,那就直接在 UpdateCommand 這個字串裡面改,就不用管 DBNull.Value 。例如:

    Update tablename
    Set columnname = Null
    Where ...
    ;

    2006年8月15日 上午 01:21
    版主
  • Dear 夜櫻:

    基本上,前面的高手們提的方法,而你上面那一串程式碼是可以Run的…;前提是你的資料庫如果是MS SQL Server的話

    由於你的資料庫,似乎是MySQL,而我之前在使用MySQL時,它在處理Null上,SQL語法上,似乎有一些些的不一樣。

    建議你,先不要在這個地方打轉,先檢查,你那一串SQL Statement 在MySQL內執行時,是不是正常,能不能達到你想要的功能

    希望對你有所幫助

     

    2006年8月15日 上午 03:47
  • 感謝你的回覆喔~

    我終於找到問題的答案

    其實我不是一直只會依賴你們的人....只要給我少少提示..

    我應該能依靠自己的能力解決問題....

    或許璉璉說得很對....遇到問題的不是你們.....

    沒理由要你們為我們解答所有問題的方案

    還有很感謝璉璉的回答...我明白我和她的距離很遠......所以我需要一段時間去解讀她的解答

    多次的冒犯....或..多次的提問....我明白對她來說還是很困擾.....希望她還能耐心的幫助解答問題

    還請以後多多指教.....我會努力的學習這裡的rules......如有出錯..還請多加提醒

    感謝你們花時間去看我的文章....辛苦了

     

    2006年8月15日 上午 04:39
  • 同樣的語法也可以在 MySQL 上跑。我直接在 VSNET 伺服器總管試過了。

    UPDATE list
    SET 防護工法 = NULL
    WHERE  SN = 1

    在 VSNET 直接用伺服器總管連線與測試可以參考:

    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!763.entry


    每個人都是這樣走過來的,哪個人天生就會解決問題?我也常有一些蠢問題。距離的遠近只是你美麗的誤會,只是經驗累積的差異。甚至性別也是你的誤會...

    我是唸水的,專長在於區域水資源管理、流域整體防洪。這才是我的專長。

    網友彼此尊重才會有良好的互動,今天立場互異,換我詢問時,沒事我張貼過提問的內容猛改,相信你也會看的莫名奇妙。

    目前所載明的規則部分,僅是為了加速彼此快速掌握問題,維持網友間良好的互動所做的明文摘示,讓剛參與討論區討論的人可以作為參考,看過你的文章,可以看的出來你會去看公告與FAQ,有更多的人是不看這些東西的,會去提某些事,是因為還希望能繼續有良好的互動,不然只要當作沒看到,還能更省時間。若是你常在站上逛,你會發現,常常會有類似電腦為什麼不能開機,一句話就沒有的這種提問。

    我重視的是文件保存性,有價值的文章會一直被引用,寫的人不是那麼有空一直重複寫,所以我比較傾向所有的文章,要能讓未來需要查詢使用的人,能清楚明白過去討論的過程與精神,得出結論的價值與原因,所以我乞求網友不要大量修改已有人回應的文章,這會讓該篇文章的價值喪失。

    2006年8月15日 上午 08:08
    版主

所有回覆

  • VB6/VBA/VBScript 直接用 Null ,VBNET 用 DBNull.Value 。

    Detail_num1 = Null

    當你用 ADO / ADO.NET + xxxCommandBuilder 會自動幫你把 Null 轉為對應的 Update 語法。

    你的 Update 那個字串不能直接丟到資料庫,資料庫不認得 Detail_num1 ,要用程式碼去組。

    2006年8月14日 下午 05:06
    版主
  • 即是????

    如何寫???

    dim Detail_num1 as string

    If Not Regex.Match(TextBox1.Text, "^[0-9]+$").Success Then
                Detail_num1 = "dbnull"?????<---------

            Else
                Detail_num1 = TextBox5.Text
            End If

    "update ("table") set vaule num = Detail_num1 where 條件"

     

    ?????????還是有錯誤吧

    2006年8月14日 下午 05:15
  • 其實DBnull我只懂這樣用....

    'textbox5 check db null
                If IsDBNull(ds.Tables("ntpg").Rows(i).Item("Muplay")) Then
                    TextBox5.Text = ""
                Else
                    TextBox5.Text = ds.Tables("ntpg").Rows(i).Item("Muplay")
                End If

    這是將datagrid的資料放入textbox5中

    -----------------------------------------------------------------

    但如何用DBNull

    將textbox的null資料存入mysql內?????

    dim var as DBNull????

    2006年8月14日 下午 05:27
  • 前面不是寫了嗎?直接用 DBNull.Value

    ds.Tables("ntpg").Rows(i).Item("Muplay") = DBNull.Value

    字串本身不得為 DBNull.Value ,只有物件變數或資料庫能收。

    重點還包括你最後如何更新資料庫?

    是透過 xxxCommandBuilder 讓它自動更新還是自己下 UpdateCommand ?

    若是 xxxCommandBuilder ,設完 DBNull.Value 就不用管它,xxxCommandBuilder 會自己產生 UpdateCommand 來更新資料庫。

    若是自己下 UpdateCommand ,那就直接在 UpdateCommand 這個字串裡面改,就不用管 DBNull.Value 。例如:

    Update tablename
    Set columnname = Null
    Where ...
    ;

    2006年8月15日 上午 01:21
    版主
  • 我把update的command改作

    test1 和 test2 是cols name

    update tablename set test2 = null where test1 = textbox1.text

    如圖所示---->但這個方法沒有用.....按了button後database沒有任何改動

    不知是否我的command有問題?還是其他問題???

    database的樣子如下--->

    有其他方法嗎?

    這個簡單的問題竟然考起了很多人.....

     

    2006年8月15日 上午 02:39
  • Dear 夜櫻:

    基本上,前面的高手們提的方法,而你上面那一串程式碼是可以Run的…;前提是你的資料庫如果是MS SQL Server的話

    由於你的資料庫,似乎是MySQL,而我之前在使用MySQL時,它在處理Null上,SQL語法上,似乎有一些些的不一樣。

    建議你,先不要在這個地方打轉,先檢查,你那一串SQL Statement 在MySQL內執行時,是不是正常,能不能達到你想要的功能

    希望對你有所幫助

     

    2006年8月15日 上午 03:47
  • 感謝你的回覆喔~

    我終於找到問題的答案

    其實我不是一直只會依賴你們的人....只要給我少少提示..

    我應該能依靠自己的能力解決問題....

    或許璉璉說得很對....遇到問題的不是你們.....

    沒理由要你們為我們解答所有問題的方案

    還有很感謝璉璉的回答...我明白我和她的距離很遠......所以我需要一段時間去解讀她的解答

    多次的冒犯....或..多次的提問....我明白對她來說還是很困擾.....希望她還能耐心的幫助解答問題

    還請以後多多指教.....我會努力的學習這裡的rules......如有出錯..還請多加提醒

    感謝你們花時間去看我的文章....辛苦了

     

    2006年8月15日 上午 04:39
  • 同樣的語法也可以在 MySQL 上跑。我直接在 VSNET 伺服器總管試過了。

    UPDATE list
    SET 防護工法 = NULL
    WHERE  SN = 1

    在 VSNET 直接用伺服器總管連線與測試可以參考:

    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!763.entry


    每個人都是這樣走過來的,哪個人天生就會解決問題?我也常有一些蠢問題。距離的遠近只是你美麗的誤會,只是經驗累積的差異。甚至性別也是你的誤會...

    我是唸水的,專長在於區域水資源管理、流域整體防洪。這才是我的專長。

    網友彼此尊重才會有良好的互動,今天立場互異,換我詢問時,沒事我張貼過提問的內容猛改,相信你也會看的莫名奇妙。

    目前所載明的規則部分,僅是為了加速彼此快速掌握問題,維持網友間良好的互動所做的明文摘示,讓剛參與討論區討論的人可以作為參考,看過你的文章,可以看的出來你會去看公告與FAQ,有更多的人是不看這些東西的,會去提某些事,是因為還希望能繼續有良好的互動,不然只要當作沒看到,還能更省時間。若是你常在站上逛,你會發現,常常會有類似電腦為什麼不能開機,一句話就沒有的這種提問。

    我重視的是文件保存性,有價值的文章會一直被引用,寫的人不是那麼有空一直重複寫,所以我比較傾向所有的文章,要能讓未來需要查詢使用的人,能清楚明白過去討論的過程與精神,得出結論的價值與原因,所以我乞求網友不要大量修改已有人回應的文章,這會讓該篇文章的價值喪失。

    2006年8月15日 上午 08:08
    版主