Ich weiß nicht ob die Sache überhaupt nützlich ist oder ob es so etwas schon gibt und es daher vollkommener schwachsinnig ist.
Da ich die ganzen letzte Woche nichts zu programmieren hatte und mir schon langweilig wurde habe ich heute eine Art SQL System erstellt, mit dem man die Möglichkeiten von Mysql hat, was aber alle Werte in einer Textdatei speichert. Das heißt man kann natürlich keine großen Tabellen Bearbeiten, aber um normales SQL zu benutzten muss man es ja erstmal installieren und ich denke das ist für viele kleinere Programme ziemlich nervig, wenn die Andwender dan erstmal SQL installieren müssen.
[autoit]
#include <array.au3>
;==========Tabelle erstellen========
$eigenschaften= "CREATE TABLE (id aut,vorname str,nachname str,hausnummer int)" ;"aut" wird automatisch hochgezälhlt
$tabelle=_OSQLcreate("C:\Daten.dat", $eigenschaften)
;==========Eintrag erstellen========
$eintrag="INSERT (hausnummer,vorname,nachname) VALUES ('12','Hans', 'Dieter')"
_OSQLinsert($tabelle,$eintrag)
;==========Einträge anzeigen lassen=========
;sql = "SELECT * Where (id) = '1'"
;array=_OSQLselect($tabelle,$sql)
;_arraydisplay($array)
;==========Alle Einträge anzeigen lassen=========
$sql = "SELECT * ALL"
$array=_OSQLselect($tabelle,$sql)
_arraydisplay($array)
;==========Spezieller Wert=========
$wert=_OSQLget($tabelle,$array[0],"vorname")
Msgbox(0,"Ausgabe","Der Wert ist " & $wert)
;==========Eintrag Löschen=========
;$loeschen = "DELETE WHERE (id)='2'"
;_OSQLdelete($tabelle,$loeschen)
;==========Eintrag Updaten=========
;$query = "Update SET (vorname,nachname) VALUES ('Peter','Njet') WHERE (id)='1'";
;_OSQLupdate($tabelle,$query)
So arbeitet das ganze, ich denke der code sagt mehr als 1000 Worte. Ich habe es an dem arbeiten mit MYSQL & PHP orientiert.
Da ich das Projekt erst heute angefangen habe steckt es natürlich noch so ziemlich in den Kinderschuhen und wenn man schon ein "and" oder einbaut oder einen Sache etwas anders übernimmt funktioniert das ganze nicht mehr. Aber Bevor ich mich jetzt noch viel intensiver damit befasse wollte ich erstmal eure Meinung wissen? Wie Sinnlos ist es wirklich und wie ist meine herangehensweise?
Hier noch der Anfangs Code:
Spoiler anzeigen
#include-once
#include <string.au3>
;===============================================================================
;
; Function Name: __OSQLcreate()
; Description: Creates an OSQL session/file.
; Parameter(s): $file - Filename. (with path)
; $befehle - Table Values (Example: "CREATE TABLE (id int,vorname str,nachname str,hausnummer int)" )
; Return Value(s): On Success - Returns an indentifier.
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLcreate($file, $befehle)
if fileexists($file)=0 Then
$text=$befehle & "¤" & @crlf
local $dat=Fileopen($file,2)
filewrite($dat,$text)
fileclose($dat)
Else
local $dat=fileopen($file,0)
local $bla=fileread($dat)
fileclose($dat)
local $linien=_stringsplit($bla,"¤" & @crlf)
if $linien[0]<>$befehle Then
$text=$befehle & "¤" & @crlf
local $dat=Fileopen($file,2)
filewrite($dat,$text)
fileclose($dat)
endif
endif
local $bef=_stringbetween($befehle,"(",")")
local $return=stringsplit($bef[0],",")
$return[0]=$file
return $return
endfunc
;===============================================================================
;
; Function Name: __OSQLinsert)
; Description: Insert a new entry in a OSQL table
; Parameter(s): $handle - the value returned from _OSQLcreate()
; $befehl - Table Values (Example: "INSERT (hausnummer,vorname,nachname,id) VALUES ('12','Hans', 'Dieter', '2')" )
; Return Value(s): Nothing
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLinsert($handle,$befehl)
local $bef=_stringbetween($befehl,"(",")")
local $a=_stringsplit($bef[0],",")
local $b=_stringbetween($bef[1],"'","'")
local $text= "("
for $i=1 to ubound($handle)-1
local $r=0
local $ergebnis=false
while $r<=ubound($a)-1
if stringmid($handle[$i],1,stringlen($handle[$i])-4)=$a[$r] Then
$text=$text & "'" & $b[$r] & "',"
$ergebnis=true
$r=100
endif
$r=$r+1
wend
if $ergebnis=false Then
if stringright($handle[$i],3)="aut" Then
local $file=fileopen($handle[0],0)
local $bla=fileread($file)
fileclose($file)
local $linien=_stringsplit($bla,"¤" & @crlf)
_ArrayDeleteEmpty($linien)
if ubound($linien)-1 <>0 then
local $wert=_stringbetween($linien[ubound($linien)-1],"'","'")
$aut=$wert[$i-1]+1
$text=$text & "'" & $aut & "',"
Else
$text=$text & "'1',"
endif
Else
$text=$text & "'',"
endif
endif
next
$text=stringmid($text,1,stringlen($text)-1) & ")¤" & @crlf
local $file=fileopen($handle[0],1)
filewrite($file,$text)
fileclose($file)
endfunc
;===============================================================================
;
; Function Name: __OSQLselect()
; Description: Search entrys in a table.
; Parameter(s): $handle - Handle
; $befehl - Search Values (Example: "SELECT * Where (id) = '1'" )
; Return Value(s): On Success - Returns an indentifier.
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLselect($handle,$befehl)
local $bef=_stringbetween($befehl,"(",")")
local $wert=_stringbetween($befehl,"'","'")
if @error and stringinstr($befehl,"ALL") then
local $file=fileopen($handle[0],0)
local $bla=fileread($file)
fileclose($file)
local $linien=_stringsplit($bla,"¤" & @crlf)
$linien[0]=""
_ArrayDeleteEmpty($linien)
return $linien
else
local $position=0
for $r=1 to ubound($handle)-1
if $bef[0]=stringmid($handle[$r],1,stringlen($handle[$r])-4) then
$position=$r-1
endif
Next
local $file=fileopen($handle[0],0)
local $bla=fileread($file)
fileclose($file)
local $linien=_stringsplit($bla,"¤" & @crlf)
for $i=1 to ubound($linien)-1
if $linien[$i]<>"" then
local $test=_stringbetween($linien[$i],"'","'")
if $test[$position] = $wert[0] Then
Else
$linien[$i]=""
endif
endif
next
$linien[0]=""
_ArrayDeleteEmpty($linien)
return $linien
endif
endfunc
;===============================================================================
;
; Function Name: __OSQLdelete()
; Description: Search and delete entrys in a table.
; Parameter(s): $handle - Handle
; $befehl - Search value (Example: ´DELETE WHERE (id)='2'" )
; Return Value(s): -
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLdelete($handle,$befehl)
local $bef=_stringbetween($befehl,"(",")")
local $wert=_stringbetween($befehl,"'","'")
local $position=0
for $r=1 to ubound($handle)-1
if $bef[0]=stringmid($handle[$r],1,stringlen($handle[$r])-4) then
$position=$r-1
endif
Next
local $file=fileopen($handle[0],0)
local $bla=fileread($file)
fileclose($file)
local $linien=_stringsplit($bla,"¤" & @crlf)
local $text=$linien[0] & "¤" & @crlf
for $i=1 to ubound($linien)-1
if $linien[$i]<>"" then
local $test=_stringbetween($linien[$i],"'","'")
if $test[$position] = $wert[0] Then
Else
$text=$text & $linien[$i] & "¤" & @crlf
endif
endif
next
local $file=fileopen($handle[0],2)
filewrite($file,$text)
fileclose($file)
endfunc
;===============================================================================
;
; Function Name: __OSQLget()
; Description: llll
; Parameter(s): $handle - Handle
; $value
; $befehl -
; Return Value(s): On Success - Returns the value
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLget($handle,$value,$befehl)
local $position=0
for $r=1 to ubound($handle)-1
if stringmid($handle[$r],1,stringlen($handle[$r])-4) = $befehl Then
$position=$r-1
endif
next
local $wupp=_stringbetween($value,"'","'")
return $wupp[$position]
endfunc
;===============================================================================
;
; Function Name: __OSQLupdate()
; Description: Update an entry in a table.
; Parameter(s): $handle - Handle
; $befehl - Table Values (Example: "Update SET (vorname,nachname) VALUES ('Peter','Njet') WHERE (id)='1'")
; Return Value(s): On Success - ---
; Author(s): Oger-lord
;
;===============================================================================
func _OSQLupdate($handle,$befehl)
local $befehle=_stringbetween("WWWW" & $befehl,"WWWW","WHERE")
local $befehlee=_stringbetween($befehl & "WWWW","WHERE","WWWW")
local $beff=_stringbetween($befehle[0],"(",")")
local $a=_stringsplit($beff[0],",")
local $b=_stringbetween($beff[1],"'","'")
local $bef=_stringbetween($befehlee[0],"(",")")
local $wert=_stringbetween($befehlee[0],"'","'")
local $position=0
for $r=1 to ubound($handle)-1
if $bef[0]=stringmid($handle[$r],1,stringlen($handle[$r])-4) then
$position=$r-1
endif
Next
local $file=fileopen($handle[0],0)
local $bla=fileread($file)
fileclose($file)
local $linien=_stringsplit($bla,"¤" & @crlf)
local $text=$linien[0] & "¤" & @crlf
for $i=1 to ubound($linien)-1
if $linien[$i]<>"" then
local $test=_stringbetween($linien[$i],"'","'")
if $test[$position] = $wert[0] Then
local $zeile= "("
for $t=1 to ubound($handle)-1
local $w=0
local $ergebnis=false
while $w<=ubound($a)-1
if stringmid($handle[$t],1,stringlen($handle[$t])-4)=$a[$w] Then
$zeile=$zeile & "'" & $b[$w] & "',"
$ergebnis=true
$w=100
endif
$w=$w+1
wend
if $ergebnis=false Then
$zeile=$zeile & "'" & $test[$t-1] & "',"
endif
next
$zeile=stringmid($zeile,1,stringlen($zeile)-1) & ")¤" & @crlf
$text=$text & $zeile
Else
$text=$text & $linien[$i] & "¤" & @crlf
endif
endif
next
local $file=fileopen($handle[0],2)
filewrite($file,$text)
fileclose($file)
endfunc
;============================Zusatz==================================
Func _ArrayDeleteEmpty(ByRef $ARRAY)
If Not IsArray($ARRAY) Then Return 0
Local $arTMP[1]
For $i = 0 To UBound($ARRAY) -1
If $ARRAY[$i] <> '' Then
If $arTMP[0] = '' Then
$arTMP[0] = $ARRAY[$i]
Else
ReDim $arTMP[UBound($arTMP)+1]
$arTMP[UBound($arTMP)-1] = $ARRAY[$i]
EndIf
EndIf
Next
$ARRAY = $arTMP
EndFunc