Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » MS-Access-Datenbank aus Webservice aktualisiren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
16.09.2004, 09:05 Uhr
~latexp
Gast


Hallo,
ich versuche aus einem Webservice heraus eine MS-Access-Datenbank zu aktualisieren.
Die (Test-)Datenbank enthällt ID,Name und Telefonnummer von irgendwelchen Kunden.
Jetzt soll folgende Methode aufgerufen werden:

[WebMethod]
public string setTel(string Name, string Tel)
{
OleDbDataAdapter DBAdapter = new OleDbDataAdapter();
DBAdapter.UpdateCommand = new OleDbCommand();
DBAdapter.UpdateCommand.CommandText = "UPDATE Kunden SET Tel = " + Tel + " WHERE Name = '" + Name + "'";
DBAdapter.UpdateCommand.Connection = DBConnection;
DBConnection.Open();
int modified = DBAdapter.UpdateCommand.ExecuteNonQuery();
string returnstring = "Es wurden " + modified.ToString() + " Einträge geändert.";
DBConnection.Close();
return returnstring;
}

Hier bekomme ich als Antwort aber diese Fehlermeldung:

System.Data.OleDb.OleDbException: Operation muss eine aktualisierbare Abfrage verwenden.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
...
...
at Datenbanktest.Service1.setTel(String Name, String Tel) in cinetpub\wwwroot\datenbanktest\service1.asmx.cs:line 86

MfG
Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2004, 09:54 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Erst mal: Warum arbeitest Du mit einem DataAdapter?


C++:
[WebMethod]
public string setTel(string Name, string Tel)
{
   OleDbCommand updateCommand = DBConnection.CreateCommand();
   updateCommand.CommandText = "UPDATE Kunden SET Tel = ? WHERE Name = ?";
   updateCommand.Parameters.Add("@Telefon", OleDbType.VarChar, 80 /* Oder wieviel Bytes die Spalte auch immer hat */).Value = Tel;
   updateCommand.Parameters.Add("@Name", OleDbType.VarChar, 80 /* Oder wieviel Bytes die Spalte auch immer hat */).Value = Name;

   DBConnection.Open();
   int modified = updateCommand.ExecuteNonQuery();
   DBConnection.Close();

   return "Es wurden " + modified.ToString() + " Einträge geändert.";
}



Zweitens: Wenn Du für die Kunden schon eine ID vergibst, warum nimmst Du dann den Namen, um auf einen von ihnen zuzugreifen?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2004, 10:09 Uhr
latexp



Vielen Dank für die Antwort!

Zu deinen Fragen:

Warum ich einen DataAdapter benutze?
- weil ich Anfänger bin und noch nicht so ganz ganau weiß was ich da eigentlich tue.

Warum ich den Namen statt der ID verwende?
- Es handelt sich lediglich um ein Testprogamm um sich in das Arbeiten mit Datenbanken einzudenken, war mir also von daher recht egal.

Jetzt wieder zu meinem Problem.
Ich hab deinen Quellcode eingesetzt und musste leider feststellen dass sich an der Fehlermeldung nichts ändert. Auch ohne Webservice, sprich in einem Consolen-Programm bekomme ich dieselbe Fehlermeldung.

Kann das an meiner Datenbank selbst liegen?
Wenn ich in Access eine Abfrage baue die das selbe un soll dann funktioniert das.

MfG
Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2004, 11:21 Uhr
Bruder Leif
dances with systems
(Operator)


Hmtja... wie sieht denn die Struktur der Tabelle aus? Gibt es den zu ändernden Kunden überhaupt?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2004, 12:08 Uhr
latexp



Den Kunden gibt es,
und selbst wenn nicht, dann müsste ich doch ein Ergebnis von 0 zurückbekommen und keinen Fehler.
--
Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.09.2004, 13:15 Uhr
Bruder Leif
dances with systems
(Operator)


Und wie sieht die Struktur der Tabelle aus?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.09.2004, 14:15 Uhr
latexp



Hab mich nochmal mit einem normalen Console-Programm versucht.

Aus diesem heraus funktioniert meine update-Anfrage.
Sobald ich allerdings einmal einen Webservice auf die Datenbank hab zugreifen lassen, geht auch die normale Anwendung nicht mehr.
Die Datenbankdatei ist dann auch read-only, und zwar so lange bis ich Visual-Studio beendet hab.

Irgendwelche Besonderheiten die ich beachten muss wenn ich eine Datenbank aus einem Webservice heraus anspreche?
--
Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.09.2004, 14:21 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von latexp:
Irgendwelche Besonderheiten die ich beachten muss wenn ich eine Datenbank aus einem Webservice heraus anspreche?


Außer, daß Access nicht gerade dafür geeignet ist... Probiers mal mit der MSDE o.ä., vielleicht hast Du nur ein Locking-Problem...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.09.2004, 15:20 Uhr
latexp



Hab mir den MSDE2000 soeben installiert und keine Ahnung was ich damit anfangen kann oder wie ich damit umgehe. Ich werds mal auf mich zukommen lassen.

Vielen Dank so weit

Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.09.2004, 18:36 Uhr
latexp



So, da bin mal wieder.

Der MSDE läuft.
Zugriffe aus normalen Programmen gehen auch.

Mein Ziel ist es allerdings aus einem Webservice auf meine Datenbank zuzugreifen und dazu würde ich gerne einen entsprechenden Benutzer einrichten. Ich denke halt es wäre nicht so klug alles über den Systemadmin abzuwickeln.

Also:
Wie lege ich Benutzer für MSDE an? Geht das auch aus Access heraus (Die Datenbank habe ich über die Access-Oberfläche angelegt).

Wie muss der "connectionString" für meine "SqlConnection" dann aussehen?

Klasse Unterstützung hier bisher, vielen Dank und nur weiter so!
--
Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: