Public Sub Connect(CallBack As String) As ResumableSub
' Note that you can use ConnectionPool from jServer library To Connect To remote databases. It will take care of managing the connections.
Try
SKSQL.Close
'File.OpenInput(File.DirApp, "sk2000.pth")
Dim ConnStr As String = "", Srvr As String, UID As String, PWD As String
#If B4J
Dim X As Int
Try
ConnStr = File.ReadString(File.GetFileParent(File.GetFileParent(File.DirApp)), "sk2000.pth")
Catch
Try
ConnStr = File.ReadString(File.GetFileParent(File.DirApp), "sk2000.pth")
Catch
MP.SQLDirect = False
Return 1
End Try
End Try
' If (DADMod.IsNull(T)) Or (T.Length = 0) Then
' MP.Msgbox($"Cannot find the file sk2000.pth in ${File.GetFileParent(File.GetFileParent(File.DirApp))} or File.ReadString(File.GetFileParent(File.DirApp) make sure this file is in the appropriate directory and this program has the rights to READ the file!"$, "File Not Found")
' Wait For Msgbox_Result (Result As Int)
' End If
ConnStr = ConnStr.SubString2(0, ConnStr.IndexOf(CRLF))
Srvr = ConnStr.SubString(ConnStr.IndexOf("SERVER=") + 7)
X = Srvr.IndexOf(";"): If X < 0 Then X = Srvr.Length
Srvr = Srvr.Replace(",", ":") '9/9/22
Srvr = "//" & Srvr.SubString2(0, X)
DBName = ConnStr.SubString(ConnStr.IndexOf("DATABASE=") + 9)
X = DBName.IndexOf(";"): If X < 0 Then X = DBName.Length
DBName = DBName.SubString2(0, X).As(String).Trim
UID = ConnStr.SubString(ConnStr.IndexOf("UID=") + 4)
X = UID.IndexOf(";"): If X < 0 Then X = UID.Length
UID = UID.SubString2(0, X)
PWD = ConnStr.SubString(ConnStr.IndexOf("PWD=") + 4)
X = PWD.IndexOf(";"):If X < 0 Then X = PWD.Length
PWD = PWD.SubString2(0, X)
' MP.Msgbox(Srvr & CRLF & DB & CRLF & UID & CRLF & PWD , "World")
' Wait For Msgbox_Result (Result As Int)
'MICROSOFT DRIVER WORKING! USING SERVER NAME!
'SKSQL.InitializeAsync("Connect", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://KIMSASUS\KIMSASUSSKSQL4:65218;databaseName=skdataDemo;user=skdata;password=shopkeeper;", "skdata", "shopkeeper")
SKSQL.InitializeAsync("Connect", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver:" & Srvr & ";databaseName=" & DBName & ";user=" & UID & ";password=" & PWD & ";", UID, PWD)
#Else
'SKSQL.in("Connect", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver:" & Srvr & ";databaseName=" & DBName & ";user=" & UID & ";password=" & PWD & ";", UID, PWD)
SKSQL.InitializeAsync("Connect", Main.driver, Main.jdbcUrl, Main.Username, Main.Password)
#If Debug
Log($"SKSQL.InitializeAsync(Connect, ${Main.driver}, ${Main.jdbcUrl}, ${Main.Username}, ${Main.Password})"$)
#End If
#End IF
Wait For Connect_Ready (Success As Boolean)
If CallBack.EqualsIgnoreCase("ConnTest") Then
If Success = False Then
Return LastException.Message
Else
Return "Success"
End If
Else
If Success = False Then
Return -1
Sleep(5000) 'wait for form to open before displaying message
' MP.xui.MsgboxAsync("PTH file was found but Failed connect to the server. Server is not available, database is not available, connect string is wrong, or you are having network/firewall issues. Contact your system administrator.", "Network/SQL Error")
' MP.xui.MsgboxAsync(LastException.Message.SubString2(0, Min(LastException.Message.Length, 500)), "Java Error:")
Else
MP.SQLDirect = True
#If Debug
#If not(B4J)
MP.Toast.VerticalCenterPercentage = 10
MP.Toast.Show("Using Direct SQL Connection", Null)
#End If
#End If
End If
Return 2
End If
Catch
If ConnStr.Length > 0 Then
ConnStr = $"${ConnStr}
connection string was parsed as:
SERVER=: ${Srvr}
DATABASE=: ${DBName}
UID=: ${UID}
PWD=: ${PWD}"$
End If
NetFailed(ConnStr)
End Try
Return 3
End Sub