Basic4Android主執行緒連線網路MySQL資料庫的方法

李晉塵發表於2018-07-03

記得有人說過:已Get的技能請不要輕易丟掉,它可能讓你擺脫現在面臨的窘境!


程式碼塊

' StrictMode (android.os.StrictMode) 是一個自Android 2.3版(API 9。Gingerbread,薑餅)引入的類。
' StrictMode是Android在API9後引入的檢測影響App執行流暢性的一種機制,例如我們都知道的主執行緒中不允許有網路操作這條規則就是嚴苛模式規則的一種,而我正是需要在主執行緒中訪問遠端MySQL資料庫進行資料驗證,所以在Activity_Create中執行DisableStrictMode過程,用於關閉StrictMode,否則編譯後無法訪問網路。


'Manifest Editor增加:
AddPermission("android.permission.INTERNET")
AddPermission("android.permission.ACCESS_NETWORK_STATE")


'程式碼驗證:
Sub DisableStrictMode ' 臨時關閉StrictMode
    Dim jo As JavaObject
    jo.InitializeStatic("android.os.Build.VERSION")
    If jo.GetField("SDK_INT") > 9 Then
        Dim policy As JavaObject
        policy = policy.InitializeNewInstance("android.os.StrictMode.ThreadPolicy.Builder", Null)
        policy = policy.RunMethodJO("permitAll", Null).RunMethodJO("build", Null)
        Dim sm As JavaObject
        sm.InitializeStatic("android.os.StrictMode").RunMethod("setThreadPolicy", Array(policy))
    End If
End Sub


Dim mysql_conn As MYSQL
' https://www.b4x.com/android/forum/threads/mysql-library-with-jdbc.22291/#post129399
Dim L As List
Dim msisdn As String

mysql_conn.setDatabase("sh-cdb-70i66q.sql.tencentcdb.com:63033","test","root","mimaxx") '連線資料庫
msisdn="13900000000"
L.Initialize '初始化列表

L = mysql_conn.Query("SELECT pack_fee FROM pack_fee WHERE msisdn =" & msisdn) '查詢號碼
If L.IsInitialized = True Then
    Msgbox(L.Get(1),msisdn) ' L.Get(0)為欄位說明
End If

相關文章