Laden...

Update in Datenbank

Erstellt von Marcel Göllner vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.517 Views
M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren
Update in Datenbank

Hallo Ihr!

Ich bekomme es nicht hin, dass mein Update in die Datenbank gemacht wird...

Habe Textboxen auf meiner Form und so weiter, welche automatisch mit den Inhalten aus der Datenbank gefüllt werden...

Nun muss ich, wenn ich einen Wert einer Box geändert habe, diesen in die Datenbank spielen...

Mit welchem Befehl geht das zügig und mit wenig Code?

Gruß Marcel! Bitte um Code-Snippet...

563 Beiträge seit 2004
vor 17 Jahren

einwenig mehr Informationen wären praktisch. Ich nehme an du arbeitest mit einem SqlDataAdapter, füllst ein DataSet mit der Fill-Methode und benutzst DataBinding um diese Daten darzustellen. Das Gegenstück zu Fill() wäre update, siehe SqlDataAdapter.UpdateCommamd, InsertCommand& DeleteCommand, ist sehr einfach, kannst die DataSet-Spalten direkt auf die Parameter mappen.

Gruss,
.unreal

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Hallo!

Ja benutze ich! Wie geht das Mappen? Im DataSetDesigner? Oder wo? Und muss ich dann einen Update durchführen, wenn ja wie? Oder macht er das automatisch?

Gruß Marcel

2.223 Beiträge seit 2005
vor 17 Jahren

moin,

???.update();

könnte dir helfen

könnte da deine informationen doch recht rar sind

sorry to late

mfg

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Hm, wie kann ich nun den CommandText ändern?

563 Beiträge seit 2004
vor 17 Jahren

Ich habe dir die Properties bereits aufgelistet. Muss ich dir noch sagen, dass du in der MSDN Doku SqlDataAdapter.UpdateCommand eingeben musst? Dort hast du alles, inklusive Snippets.

DataSetDesigner: würde ich die finger davon lassen. Verwende einen Designer/Wizard erst, wenn du diesen Code auch selber schreiben könntest. Die Struktur eines DataSets kriegst du mit SqlDataAdapter.fill. Verwendest du Stored Procedures oder Sqlqueries?

Hm, wie kann ich nun den CommandText ändern?

Guck dir die SqlCommand Klasse an!

.unreal

563 Beiträge seit 2004
vor 17 Jahren

Original von Marcel Göllner
Hallo!

Ja benutze ich! Wie geht das Mappen? Im DataSetDesigner? Oder wo? Und muss ich dann einen Update durchführen, wenn ja wie? Oder macht er das automatisch?

Gruß Marcel

Wo -> SqlCommand, denn du dann beim Insert-, Update- oder DeleteCommand hinzufügst. SqlCommand.Parameters.Add() wäre die Methode fürs Mappen.

Gruss,
.unreal

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Habe nun folgenden Code:


int iBerichtNummer = Convert.ToInt32(TXTBoxNummer.Text);

SqlConnection oSQLConnection = new SqlConnection("Data Source=|DataDirectory|\\ConcertNews.mdb");
SqlDataAdapter oSQLDataAdapter = new SqlDataAdapter("SELECT * FROM Bericht", oSQLConnection);
SqlCommandBuilder oSQLCommand = new SqlCommandBuilder(oSQLDataAdapter);

oSQLConnection.Open();

oSQLCommand.GetUpdateCommand().CommandText = "UPDATE Bericht SET Stichwoerter =" + TXTBoxEingabeStichwörter.Text + " WHERE Nummer =" + iBerichtNummer;

oSQLDataAdapter.Update(this.concertNewsDataSet.Bericht);

oSQLConnection.Close();

Folgende Fehlermeldung kommt nun:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Hm, könnt ihr mir weiterhelfen, denn so steht das Beispiel in MSDN!

Gruß Marcel

F
10.010 Beiträge seit 2004
vor 17 Jahren

Vielleicht solltest Du noch einmal hganz genau lesen wofür eine SqlConnection benutzt wird,
und was eine MDB-Datei ist.

Solange du diese Grundlagen nicht verstehst, wirst Du ewig im Dunkeln
herumfischen.

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Hm, glaubst du ich habe es nicht schon anders versucht!

Auf diese Klasse wurde hier hingewiesen! Hm...Hatte davor OleDBConnection benutzt...hat nur nicht funktioniert!

Kannst du mir vielleicht einen kleinen Snippet bereitstellen?

Gruß Marcel

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Habe es nun nochmal mit OleDb versucht! Klappt aber nicht!

Könnt ihr mir sagen, was daran falsch ist?


            OleDbConnection oOleDbConnection = new OleDbConnection(ConcertNews.Properties.Settings.Default.ConcertNewsConnectionString);
            OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter("SELECT * FROM Bericht", oOleDbConnection);
            OleDbCommandBuilder oOleDbCommand = new OleDbCommandBuilder(oOleDbDataAdapter);

            oOleDbConnection.Open();
            oOleDbCommand.GetUpdateCommand().CommandText = "UPDATE Bericht SET Stichwoerter =" + TXTBoxEingabeStichwörter.Text + " WHERE Nummer =" + iBerichtNummer;

            oOleDbDataAdapter.Update(this.concertNewsDataSet.Bericht);

            oOleDbConnection.Close();

F
10.010 Beiträge seit 2004
vor 17 Jahren

Was willst Du nun machen?

Die Eingaben in 2 Textboxen in die DB schreiben, oder ein DataSet updaten?

Wenn Du ersteres willst, benutze ein OleDbCommand mit Paramater Collection.


using( OleDbConnection con = new OleDbConnection(ConcertNews.Properties.Settings.Default.ConcertNewsConnectionString) )
{
  OleDbCommand cmd = new OleDbCommand("UPDATE Bericht SET Stichwoerter=? WHERE Nummer=?", con);
  cmd.Parameter.AddWithValue( "@Stichwoerter", TXTBoxEingabeStichwörter.Text );
  cmd.Parameter.AddWithValue( "@Nummer", iBerichtNummer );
  con.Open();
  cmd.ExecuteNonQuery();
}

Wenn zweites, lass dein Updatecommand weg, das macht der Commandbuilder selber,
dann musst Du aber sicherstellen, das dein DataSet auch wirklich die Daten beinhaltet.

Und nochetwas höhr auf rumzuversuchen.
Nimm Dir die Zeit und liess einmal die Grundlagen von ADO.NET durch, dann
verstehst Du die Zusammenhänge und es geht viel schneller voran,
und es ist nicht so frustrierend.

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

OK! Ersteres! Hm, wie mache ich eine Parameter Collection?

Da, ich unbedingt das brauche, benötige ich noch kurz eure Hilfe...Danach werde ich mir mal das Buch: ADO.NET Step by Step durchlesen! OK? ^^ Oder empfehlt ihr mir da ein anderes?

Eine allgemeine Frage: Wie eignet ihr euch euer Wissen an?
Lest ihr ein Buch nach dem anderen Buch, oder pickt ihr Euch immer kleine Einzelteile raus?

Habt ihr Tipps zur Lernmethode? Wieviele Seiten sollte man ungefähr am Tag durcharbeiten um nicht zuviel oder zuwenig zu tun?

Habe mir 2 Bücher gekauft: C# in 21 Tagen, und Windows Forms in 21 Tagen...Sollte ich diese Bücher erst einmal durcharbeiten?

Gruß Marcle
P.S. Bitte euch um diese kleine Hilfe noch!

M
Marcel Göllner Themenstarter:in
137 Beiträge seit 2006
vor 17 Jahren

Hallo FZelle!

Danke, du hast mein Problem gelöst! Sehr sehr nett von dir!

Gruß Marcel!

HAST EINEN GUT BEI MIR! GRINS

F
10.010 Beiträge seit 2004
vor 17 Jahren

Ja, arbeite die Bücher ganz durch.

Ersteinmal die Grundlagen schaffen, danach kannst Du dann wahllos
alle möglichen kleinigkeiten ausprobieren, aber ohne Grundlagen geht das nicht.