You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.0 KiB
120 lines
4.0 KiB
B4J=true
|
|
Group=Modules
|
|
ModulesStructureVersion=1
|
|
Type=StaticCode
|
|
Version=9.1
|
|
@EndOfDesignText@
|
|
' DataUtils Code module
|
|
' Version 1.08
|
|
Sub Process_Globals
|
|
Dim pool As ConnectionPool
|
|
End Sub
|
|
|
|
Public Sub CreateDatabaseIfNotExist
|
|
Try
|
|
Dim DBFound As Boolean
|
|
Dim strSQL As String
|
|
Dim DBName As String = Main.Conn.DbName.As(String)
|
|
' SQLite
|
|
If Main.Conn.DbType.EqualsIgnoreCase("sqlite") Then
|
|
Log("Checking database...")
|
|
|
|
If File.Exists(File.DirApp, DBName) Then
|
|
Log("Database found!")
|
|
'DB.InitializeSQLite(File.DirApp, DBName, False)
|
|
Else
|
|
Log("Database not found!")
|
|
Log("Creating database...")
|
|
Dim DB As SQL
|
|
DB.InitializeSQLite(File.DirApp, DBName, True)
|
|
DB.ExecNonQuery("PRAGMA journal_mode = wal")
|
|
|
|
strSQL = Main.queries.Get("CREATE_TABLE_TBL_CATEGORY")
|
|
If strSQL <> "" Then DB.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("INSERT_DUMMY_TBL_CATEGORY")
|
|
If strSQL <> "" Then DB.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("CREATE_TABLE_TBL_PRODUCTS")
|
|
If strSQL <> "" Then DB.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("INSERT_DUMMY_TBL_PRODUCTS")
|
|
If strSQL <> "" Then DB.AddNonQueryToBatch(strSQL, Null)
|
|
|
|
Dim SenderFilter As Object = DB.ExecNonQueryBatch("SQL")
|
|
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
|
|
If Success Then
|
|
Log("Database is created successfully!")
|
|
Else
|
|
Log("Database creation failed!")
|
|
End If
|
|
End If
|
|
End If
|
|
' MySQL
|
|
If Main.Conn.DbType.EqualsIgnoreCase("mysql") Then
|
|
Main.Conn.JdbcUrl = Main.Conn.JdbcUrl.Replace(DBName, "information_schema")
|
|
Dim con As SQL = OpenDB
|
|
If con.IsInitialized Then
|
|
Log($"Checking database..."$)
|
|
strSQL = Main.queries.Get("CHECK_DATABASE")
|
|
Dim res As ResultSet = con.ExecQuery2(strSQL, Array As String(DBName))
|
|
Do While res.NextRow
|
|
DBFound = True
|
|
Loop
|
|
res.Close
|
|
If DBFound Then
|
|
Log("Database found!")
|
|
Else
|
|
Log("Database not found!")
|
|
Log("Creating database...")
|
|
|
|
strSQL = Main.queries.Get("CREATE_DATABASE").As(String).Replace("{DBNAME}", DBName) ' Can't use prepared statement
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("USE_DATABASE").As(String).Replace("{DBNAME}", DBName)
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
'strSQL = Main.queries.Get("DROP_TABLE_IF_EXIST_TBL_CATEGORY")
|
|
'If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("CREATE_TABLE_TBL_CATEGORY")
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("INSERT_DUMMY_TBL_CATEGORY")
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
'strSQL = Main.queries.Get("DROP_TABLE_IF_EXIST_TBL_PRODUCTS")
|
|
'If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("CREATE_TABLE_TBL_PRODUCTS")
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
strSQL = Main.queries.Get("INSERT_DUMMY_TBL_PRODUCTS")
|
|
If strSQL <> "" Then con.AddNonQueryToBatch(strSQL, Null)
|
|
|
|
Dim SenderFilter As Object = con.ExecNonQueryBatch("SQL")
|
|
Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
|
|
If Success Then
|
|
Log("Database is created successfully!")
|
|
Else
|
|
Log("Database creation failed!")
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Catch
|
|
LogError(LastException)
|
|
CloseDB(con)
|
|
Log("Error creating database!")
|
|
Log("Application is terminated.")
|
|
ExitApplication
|
|
End Try
|
|
CloseDB(con)
|
|
' Revert jdbcUrl to normal
|
|
Main.Conn.JdbcUrl = Main.config.Get("JdbcUrl")
|
|
End Sub
|
|
|
|
Sub OpenDB As SQL
|
|
If Main.Conn.DbType.EqualsIgnoreCase("mysql") Then
|
|
pool = Main.OpenConnection(pool)
|
|
Return pool.GetConnection
|
|
End If
|
|
Return Null
|
|
End Sub
|
|
|
|
Sub CloseDB (con As SQL)
|
|
If con <> Null And con.IsInitialized Then con.Close
|
|
If Main.Conn.DbType.EqualsIgnoreCase("mysql") Then
|
|
If pool.IsInitialized Then pool.ClosePool
|
|
End If
|
|
End Sub |