ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
1971
1971
EMPFEHLEN
-
Hallo zusammen,
habe in "Microsoft Visual C# 2008 Express Edition" ein DataGridView, in welchem ich Werte von einer MySQL-Datenbank (per ODBC) anzeigen lassen kann. Funktioniert. (siehe Code-Snippet unten...)
Nun möchte ich in diesem Formular per btn_update(_Click) Änderungen, welche ich im DataGridView mache, in der Datenbank (MySQL) in der entsprechenden Tabelle updaten. Habe schon verschiedene Foren und Howtos durchstöbert aber konnte es leider noch nicht zum Laufen bringen. Habe daher den Code in "btn_update_Click" wieder deletet.
Kann mir hier jemand weiterhelfen?
Besten Dank
shel
************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.ProviderBase;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
namespace dgv_Update
{
public partial class Form1 : Form
{
private System.Data.Odbc.OdbcCommand OdbcCom;
private string ConStr;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ConStr = "DRIVER={MySQL ODBC 5.1 Driver};SERVER="
+ "127.0.0.1"
+ ";PORT="
+ "3306"
+ ";DATABASE="
+ "db_People"
+ ";UID="
+ "root"
+ ";PWD="
+ ""
+ ";OPTION=3";
OdbcConnection Conn = new OdbcConnection(ConStr);
Conn.Open();
OdbcCom = Conn.CreateCommand();
string SelectQuery = "SELECT * FROM tbl_Place";
OdbcDataAdapter DA = new OdbcDataAdapter(SelectQuery, Conn);
DataSet DS = new DataSet();
DA.Fill(DS, "MyTable");
BindingSource bindingSource1 = new BindingSource();
bindingSource1.DataSource = DS.Tables[0];
BindingNavigator bindingNavigator1 = new BindingNavigator();
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1.DataSource;
}
private void btn_update_Click(object sender, EventArgs e)
{
//Code, um die gemachten Änderungen im DataGridView1 in der MySQL-Tabelle upzudaten
}
}
}
-
14.10.09 10:12 #2
Schau dir mal die Hilfe des OdbcDataAdapters an.
Dieser hat noch drei Eigenschaften für InsertCommand, UpdateCommand und DeleteCommand.
Dort kannst du die entsprechenden SQL Statments setzen.
Anschliessend per OdbcDataAdapter.update die Daten zurück in die Datenbank schreiben.
Das Dataset oder die Datatable verwaltet selbstständig die vorgenommenen Änderungen.
Mit .GetChanges kannst du zum Beispiel die Änderungen manuell abrufen.Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hallo mage,
besten Dank für deine Tipps.
Habe nun den Code im btn_update(_Click) mit folgenden beiden Zeilen erweitert:
bindingSource1.EndEdit();
DA.Update(DS, "MyTable");
Jedoch leider immer noch ohne Erfolg. Erhalte jedoch keine Syntaxfehler, das Programm kann aber die Änderungen im DataGridView einfach immer noch nicht in der Datenbank machen!
Kannst du mir allenfalls nochmals bitte helfen.
Besten Dank
shel
-
15.10.09 10:56 #4
Nur das Update aufzurufen reicht nicht aus.
Das Programm muss auch wissen, wie es die Daten abgleichen kann.
Dazu müssen die Commands-SQL Strings gesetzt werden, Da.InsertCommand, Da.UpdateCommand und DA.DeleteCommand.
Ggf. reicht es aus diese automatisch erzeugen zu lassen.
Hierbei ist es aber zwinged erforderlich, dass die Spaltebezeichnungen mit der in der DB Übereinstimmen.
OleDbCommandBuilder builder = new OleDbCommandBuilder(DA);Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hallo mage,
habe deine Code-Teile versucht in meinem Code einzubauen. Jedoch leider immer noch ohne Erfolg. Syntax-Fehler, fehlende Parameter, ...
Kannst du bitte deine gemachten Angaben direkt in meinem (gesamten) Code einbauen. So müsste es dann funktionieren. Denn ich weiss auch nicht genau, wo ich deine Code-Teile in meinem Projekt exakt einbauen muss?
Besten Dank
shel
-
15.10.09 13:39 #6
Schau dir mal den Artikel an Punkt 4:
http://code-inside.de/blog/2007/11/2...gen-net-mysql/Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hallo mage,
diese Site habe ich schon mehrmals besucht und ausgetestet.
Ich möchte nicht nur einen Record auf einmal updaten sondern alle gemachten Änderungen (also meistens mehrere Zeilen und Zellen) im DataGridView1 auf einmal in der Datenbank (Tabelle) ändern per btn_update.
Kannst du mir hier nochmal bitte weiterhelfen.
Gruss
shel
-
16.10.09 08:51 #8
Der DataAdapter geht beim Update alle Zeilen in der Datatable durch und prüft ob Änderungen vorgenommen wurden (row.RowState).
Wurde eine Änderung festgestellt überträgt er diese in die Datenbank.
Vorraussetzung dafür ist, er muss wissen wie die Änderungen zu übertragen sind.
Es gibt drei Verschiedene Möglichkeiten:
-Zeile ist Neu -> Zeile muss angefügt werden (Insert) -> benötigt DataAdapter.InsertCommand
-Zeile wurde geändert -> Zeile muss aktualisiert werden (Update) -> benötigt DataAdapter.UpdateCommand
- Zeile wurde gelöscht -> Zeile muss gelöscht werden (Delete) -> DataAdapter.DeleteCommand
Damit der DataAdapter dies kann musst du die entsprechendend Commands setzen.
In diesem Buchartikel ist alles ganz ausführlich erklärt:
http://openbook.galileocomputing.de/...arp_29_002.htm
Vielleicht hilft es dir für das Verständnis auch die vorhergehenden Kaptiel zu lesen.
Leider kann ich dir nicht weiter helfen ohne deine Datanbankstruktur zu kennen, ausserdem kenne ich mich mit mysql leidig wenig aus, da ich mit dem MS Sql Server arbeite. Die Konzepte sind aber recht ähnlich.Allen ist das Denken erlaubt, vielen bleibt es erspart. (Kurt Goetz)
-
Hallo mage
hier der SQL-Code, um zuerst die Datenbank und dann die Tabelle in MySQL zu erstellen:
CREATE DATABASE 'db_People';
USE 'db_People';
CREATE TABLE 'tbl_Place' (
'id_Place' INT(11) NOT NULL AUTO_INCREMENT,
'NP' INT(11) NOT NULL,
'Name_Place' VARCHAR(45) NOT NULL,
PRIMARY KEY ('id_Place')
);
Wenn du mit dem den Code in btn_update(_Click) zusammenbringt, ist das ideal.
Zwischenzeitlich werde ich deine Tipps im Buch Galileo-Computing studieren bzw. testen.
Gruss
shel
Ähnliche Themen
-
[Mysql] Spalte updaten +1
Von alex130 im Forum Relationale DatenbanksystemeAntworten: 18Letzter Beitrag: 02.05.07, 20:37 -
2 Formularfelder in MySQL updaten
Von wallis im Forum PHPAntworten: 17Letzter Beitrag: 01.09.05, 00:59 -
[MySql] Datenbank updaten
Von Claas M im Forum PHPAntworten: 2Letzter Beitrag: 27.05.04, 19:15 -
MYSQL eintrag Updaten
Von BFreakout im Forum PHPAntworten: 5Letzter Beitrag: 26.05.04, 12:51 -
MySQL-DB Einträge updaten
Von christoph_hro im Forum PHPAntworten: 8Letzter Beitrag: 09.05.04, 13:25





Zitieren
Login





