james3mg Posted September 7, 2007 Posted September 7, 2007 (edited) I searched a few ways and couldn't find a similar tool that's already in the forum. Hopefully I didn't just miss it. If I did, then just ignore this This script just allows you to open a SQLite database and view the contents of all the available tables. It finds the table names by running a SELECT on the special table "SQLITE_MASTER", as documented here.Hope someone finds it helpful! Limitations:-It takes a few seconds to show a table that has a few hundred entries - most of the time is in the GUICtrlCreateListViewItem() command. A list would be faster, but harder to read and get the data you're looking for. It also takes a few seconds when you switch AWAY from that table, because it has to GUICtrlDelete() each item.-If a table exists but doesn't contain any data, you only see the name of the first column in the ListView header. I'm not sure why this is - I thought that SQLite would still return all the column names when you SELECT * from an empty table...expandcollapse popup#include <SQLite.au3> #include <SQLite.dll.au3> #include <GUIConstants.au3> Global $aResult,$iRows,$iColumns _SQLite_Startup() $DbFilename=FileOpenDialog("Select a SQLite database:","","Database files (*.db)|All files(*.*)",3,"") If @error Then Exit If _SQLite_Open($DbFilename)=0 Then;cancel pressed or file doesn't exist. MsgBox(16,"Error","Error opening the database file") Exit EndIf If _SQLite_GetTable2d(-1,"Select * From SQLITE_MASTER",$aResult,$iRows,$iColumns) <> $SQLite_OK Then;can't query the table - may be encrypted or not a SQLite database. MsgBox(16,"Error","This file does not appear to be a vaild SQLite database.") Exit EndIf Global $TableNames[1]=["0"];an array that just contains the names of the available tables - quickly transformed into $TableNameStr to populate the combo box. For $i=1 To $iRows If $aResult[$i][0] = "Table" Then $TableNames[0]+=1 ReDim $TableNames[$TableNames[0]+1] $TableNames[$TableNames[0]]=$aResult[$i][1] EndIf Next $MainGUI=GUICreate("View a SQLite database",640,480) GUICtrlCreateLabel("Table names:",5,7,100,20) Local $TableNameStr="" For $i=1 To $TableNames[0] $TableNameStr&="|"&$TableNames[$i] Next $TableSelectCombo=GUICtrlCreateCombo("",110,5,525,20,$CBS_DROPDOWNLIST) GUICtrlSetData(-1,$TableNameStr) $TableDisplayList=GUICtrlCreateListView("|",5,30,630,445) Global $ListViewItems[1]=["0"] GUISetState() While 1 $msg=GUIGetMsg() Switch $msg Case $TableSelectCombo;new table selected for display For $i=1 To $ListViewItems[0] GUICtrlDelete($ListViewItems[$i]) Next Global $ListViewItems[1]=["0"] If _SQLite_GetTable2d(-1,"Select * From "&GUICtrlRead($TableSelectCombo)&";",$aResult,$iRows,$iColumns) = $SQLite_OK Then GUICtrlDelete($TableDisplayList) Local $HeaderStr=$aResult[0][0] For $i=1 To $iColumns-1 $HeaderStr&="|"&$aResult[0][$i] Next $TableDisplayList=GUICtrlCreateListView($HeaderStr,5,30,630,445) For $i=1 To $iRows Local $ItemStr=$aResult[$i][0] For $n=1 To $iColumns-1 $ItemStr&="|"&$aResult[$i][$n] Next $ListViewItems[0]+=1 Redim $ListViewItems[$ListViewItems[0]+1] $ListViewItems[$ListViewItems[0]]=GUICtrlCreateListViewItem($ItemStr,$TableDisplayList) Next EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Edited September 7, 2007 by james3mg "There are 10 types of people in this world - those who can read binary, and those who can't.""We've heard that a million monkeys at a million keyboards could produce the complete works of Shakespeare; now, thanks to the Internet, we know that is not true." ~Robert Wilensky0101101 1001010 1100001 1101101 1100101 1110011 0110011 1001101 10001110000101 0000111 0001000 0001110 0001101 0010010 1010110 0100001 1101110
ptrex Posted September 7, 2007 Posted September 7, 2007 @james3mg Nice example !! regards, ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New
randallc Posted October 27, 2007 Posted October 27, 2007 (edited) @james3mg Nice example !!ptrexHi, Yes, i like it.. Here it is shorter showing how simple the logic can look.. [ BETA; Running:(3.2.9.4)] We can add sorting esaily too.. later? #include <SQLite.au3>; sqliteBrowser7.au3;~ #include <SQLite.dll.au3> #include <GUIConstants.au3> Local $aResult, $iRows, $iColumns, $TableNames[1], $TableNameStr = "", $c = _SQLite_Startup() $DbFilename = FileOpenDialog("Select a SQLite database:", "", "Database files (*.db*)|All files(*.*)", 3, ""); If _SQLite_Open($DbFilename) = 0 Then Exit;cancel pressed or file doesn't exist.; If _SQLite_GetTableNames($DbFilename, $TableNames) <> $SQLite_OK Then Exit; Local $MainGUI = GUICreate("View an SQLite database", 640, 480,-1,-1, $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX + $WS_SIZEBOX) Local $c = GUICtrlCreateLabel("Table names:", 5, 7, 100, 20),$TableSelectCombo = GUICtrlCreateCombo("", 110, 5, 525, 20, $CBS_DROPDOWNLIST) Local $c = GUICtrlSetData(-1, _ArrayToString($TableNames, "|", 2), $TableNames[2]),$c = GUISetState(), $Hdr = "",$LV ="",$s = WinGetPos("") Do $msg = GUIGetMsg() If $msg = $TableSelectCombo Or $LV = "" Then ;new table selected for display If _SQLite_GetTable2d(-1, "Select * From " & GUICtrlRead($TableSelectCombo) & ";", $aResult, $iRows, $iColumns) = $SQLite_OK Then For $i = 0 To $iColumns - 1 $Hdr &= $aResult[0][$i] & "|" Next Local $c = GUICtrlDelete($LV),$s = WinGetPos(""),$LV = GUICtrlCreateListView(StringTrimRight($Hdr, 1), 5, 50, $s[2]-9, $s[3]-9) Local $c=_GUICtrlListView_AddArray ($LV, $aResult), $Hdr = "" EndIf EndIf Until $msg = $GUI_EVENT_CLOSE Func _SQLite_GetTableNames(ByRef $sDB, ByRef $a2Result) Local $iRows, $iColumns, $Select = "SELECT name FROM sqlite_master WHERE type = 'table' OR type = 'view';" return _SQLite_GetTable(-1, $Select, $a2Result, $iRows, $iColumns) EndFunc ;==>_SQLite_GetTableNames Best, Randall PS Example .db3 attached Edited October 27, 2007 by randallc ExcelCOM... AccessCom.. Word2... FileListToArrayNew...SearchMiner... Regexps...SQL...Explorer...Array2D.. _GUIListView...array problem...APITailRW
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now