Schrift
[thread]3489[/thread]

sqlite datei.... hilfe benötigt: codebeispiel wäre super

Leser: 1


<< >> 9 Einträge, 1 Seite
Rooty
 2004-07-30 04:22
#32472 #32472
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi

kann mir jemand ein beispiel script schreiben wo das script die datei liste.dbs öffnet (sqlite) dann einen tabelle selektiert und dann einen wert ändert.5 sec wartet und die datei schliesst. Der geänderte Wert sollte gespeichert sein, fertig.

Beispiel:
open datei (liste.dbs)
Öffne "User" (Table)
selektiere Spalte C
selektiere Zeile 4 von 10
Ändere den Wert in Spalte C Zeile 4
warte 5 sec
schliesse datei
(ist der wert dann gespeichert ?)

Spalte: -->           A  B  C  D
Zeilen:                 1       |
  |                       2       |
  V                      3       |
                          4 ---Wert

danke
format_c
 2004-07-30 05:25
#32473 #32473
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Sorry bei mir lässt es sich irgendwie grad nicht installieren.
Dafür benötigst du DBI als Datenbankinterface und den SQLite-Treiber.
Wie da speziell SQLite Datenbanken behandelt werden steht in DBD::SQLite und generelle Sachen wie das SQL-Interface benutzt wird in DBI

CPAN:DBI
CPAN:DBD::SQLite

Gruß Alex
format_c
 2004-07-30 05:41
#32474 #32474
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich würde mal behaupten so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
use DBI;

my $dbh = DBI->connect("dbi:SQLite:dbname=test.sqlite","","") or die DBI::errstr();

$dbh->do("UPDATE test SET spalte3='verändert' WHERE spalte2='zeile2'");

# Mal schaun
my $sth = $dbh->prepare("SELECT * FROM test");
$sth->execute();
while (my @row = $sth->fetchrow_array()) {
local $, = '|';
print @row,"\n";
}
# Geht doch;p
$sth->finish();
$dbh->disconnect();


Gruß Alex
Rooty
 2004-07-30 12:57
#32475 #32475
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
danke für das script. den inhalt von der db bekomm ich nun angezeigt. nun möchte ich aber wie oben einen wert ändern.

sqlite-script
Nun möchte ich s_channel_name selektieren
dazu muss ich in zeile 3
den wert "Move-Data" durch "Move-Server" ersetzen



ps: ist mein erstes sql-programm
renee
 2004-07-30 13:05
#32476 #32476
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was hat den die Zeile 3 für einen Primärschlüssel? Du brauchst etwas, woran Du die Zeile eindeutig identifizieren kannst... Oder kommt dass Move-Data in keiner anderen Zeile vor??

dann:
Code: (dl )
$dbh->do("UPDATE tabellenname SET s_channel_name = 'Move-Server' WHERE s_channel_name='Move-Data';");
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2004-07-31 17:52
#32477 #32477
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Rooty: Irgendwie sieht mir dein Beispiel im ersten Beitrag so aus, als ob du eher eine Tabellenkalkulation brauchst als eine relationale Datenbank...
Rooty
 2004-07-31 18:04
#32478 #32478
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
der erste beitrag war zum beschreiben des problems, ich hab mich aber dann doch für das bild entschieden.
Strat
 2004-07-31 19:16
#32479 #32479
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wie sieht denn deine tabelle aus? wenn du in der sqlite-Shell bist, bekommst du sie mit
Code: (dl )
.schema tabellenname

tabellenname natuerlich durch den namen der tabelle ersetzen...

und vielleicht auch beschreiben, was fuer werte die einzelnen spalten i.d.R. aufnehmen\n\n

<!--EDIT|Strat|1091287015-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Rooty
 2004-08-06 14:18
#32480 #32480
User since
2004-03-14
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
das script oben hat perfekt funktioniert nur wie führ ich eine aktualisierung durch.

1. Wert in Datenbank wird geändert
2. Client sieht nicht die veränderung
3. erst wenn der server neugestartet wird sieht der client die veränderung

Ist sowas möglich ein befehl das alle clienten die datenbank abrufen ?
<< >> 9 Einträge, 1 Seite



View all threads created 2004-07-30 04:22.