2014-04-25 64 views
0
 Dim sqlsporring As String = "SELECT MAX(pID) AS pID FROM person_kunde" 

    kobling.sporring(user, password, sqlsporring) 
    svar = kobling.hentData() 

    Dim temprad As DataRow 
    Dim nyID, modID As String 
    For Each temprad In svar.Rows 
     nyID = temprad("pID") 
     modID = nyID + 1 
     nyKundeId = modID 
    Next temprad 

此代碼必要性給我我需要的東西。它會在數據庫中找到最高的ID,並給出(在這種情況下爲新用戶)ID(值爲1)。 問題是我的數據庫存儲了此用戶的ID,其中包含4位數字0001,0002,0003等等,而這個代碼只是給新用戶的ID 4.強制一個數字在數據庫中包含4位數

是否有一個簡單的方法來強制新的ID爲4位數,因爲它會看起來很愚蠢,如果我手動添加3 x'0'硬編碼一次在這個基地內有超過9個用戶,我會更喜歡一個更優雅的解決方案。

編輯 一如既往,感謝所有的指針,並沒有幫助我解決這個問題,我想提高我的代碼。

應該提到之前,這是用於INSERT - 問,這解決了這個問題:

nyKundeId.ToString("0000") 

感謝您對MySQL的 - 「0」 如何前墊郵政編碼? - 鏈接,該訣竅:)

+0

您可以讓1001成爲第一個分配的ID。 –

+1

爲什麼你使用字符串進行數學計算? – Stoleg

+0

將Option Strict On添加到代碼的頂部,或者在項目的屬性中將其打開。 @Stoleg指出,你正在嘗試用字符串進行數學運算。 –

回答

0

SELECT LPAD(field_name,4, 0) FROM table;

1

只存儲整數4。真。將其格式化爲使用LPAD() function或(對於首選項)在應用程序代碼中顯示額外的0,如下所示:nyKundeId.PadLeft(4, "0"c)這是數據庫應該如何工作的。

另外,您發佈的VB代碼是可怕的增加用戶ID的方法。它創造了一個競爭條件,如果你有一個事件同時產生大量的新用戶,你最終可能會試圖創建兩個具有相同ID的用戶(或更多)。相反,讓你的數據庫爲你做這個,使用它的auto_increment功能。

相關問題