# c# datenbank



## deen_90 (10. Dezember 2007)

Hallo

Leidr komm ich mit mein Programm nicht weiter. Es ist eine Webapplikation mit c#.
Also das Programm sollte können, die Leute sollen auf diese Seite kommen und dort die Probleme angeben die sie mit dem Sitzungszimmer haben. 
Die Probleme die sie angeben sollten in einer Datenbank gespeichert werden und durch GridView angezeigt werden auf der Page.

Momentan will ich aber, dass ich die Zeilen der GridView bearbeiten möchte, also Edit funktioniert schon, aber wenn ich dann auf Update klicke funktionierts nicht und das Delete auch nicht.Ich habe schon überall im Internet gesucht ob ich was finde, aber ich finde nichts. 

Das Programm sieht fängs so aus:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        AccessDataSource2.SelectCommand = (string)Session["stSQL1"];
    }


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        AccessDataSource2.UpdateCommand = (string)Session["stSQL1"];
    }

protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
        AccessDataSource2.DeleteCommand = (string)Session["stSQL1"];
    }


Ich hoffe jemand kann mir helfen.....


----------



## Mel_One (10. Dezember 2007)

Hm, du musst noch selber ein Update ausführen. Wenn du den Kram in nem Dataset hast, musst du einen passenden TableAdapter erstellen, der das Updatekommando enthält und dann über die Updatemethode des Tableadapters, welcher das Dataset als Argument übernimmt, das ganze updaten.


```
TableAdapter objTableAdapter=new TableAdapter();
objTableAdapter.UpdateCommand="Updatebefehl";
objTableAdapter.update(objDataSet);
```


----------



## deen_90 (10. Dezember 2007)

Also wo muss ich denn den Updatecommand machen?


----------



## Mel_One (10. Dezember 2007)

Also, das sollte innerhalb der Methoden, die du oben benutzt, schon passen. Da sind die neuen Daten normalerweise bereits im Dataset gelandet, und du solltest dann diesen Update-Befehl ohne Probleme ausführen können.


----------



## deen_90 (10. Dezember 2007)

Also dann muss ich einfach den Code den Sie geschrieben haben in der Methode von UpdateCommand reinschreiben und dann sollte es gehen. Hab ich das richtig verstanden?


----------



## Mel_One (10. Dezember 2007)

Joa. Natürlich den entsprechenden Update-Befehl einfügen und das richtige Dataset übergeben, aber das sollte es unter normalen Umständen tun.
PS: Es gibt auch ein .Net-Teil in diesem Forum, da wäre deine Frage übrigens besser aufgehoben. ;-)


----------



## deen_90 (10. Dezember 2007)

Noch was ich brauche jez noch ein Verweis för den TableAdapter. Weisst du welchen ich hinzufügen muss?


----------



## Mel_One (10. Dezember 2007)

Hm, k. Du brauchst da normalerweise einen Verweis auf den Namespace, der für dein Datenbanksystem passt (beim SQL-Server z.B. System.Data.SqlClient, bei OleDB System.Data.OleDb). Ah, ich vergaß, es kann sein, dass der TableAdapter noch eine Datenbankverbindung braucht, aber dat wirst du wahrscheinlich beim Ausführen merken.


----------



## deen_90 (10. Dezember 2007)

Also den Data.SqlClient Verweis hab ich schon abr es get immer noch nicht. Mir wird immer angezeigt:

The type or namespace 'TableAdapter' could not be found(are you missing a using directive or an assembly reference?)


----------



## Mel_One (10. Dezember 2007)

Hm, dat Ding könnte auch SqlTableAdapter heißen. Notfalls immer mal in der Msdn-Library (http://msdn2.microsoft.com/de-de/default.aspx) mal nachgucken, da sollte sich dat Ding über den Suchbegriff TableAdapter schnell finden lassen.


----------



## deen_90 (10. Dezember 2007)

ok, danke vielmal.mal schauen obs funktioniert


----------



## deen_90 (12. Dezember 2007)

hallo nochmal

leider funktionierts noch nicht. er gibt mir immer noch einen fehler an bei TableAdapter....


----------



## Mel_One (13. Dezember 2007)

Wie sieht denn dein Code jetzt aus und was für einen Fehler wirft er?


----------



## deen_90 (17. Dezember 2007)

also bis jetzt bin ich so weit:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.DirectoryServices;
using System.Security.Principal;
using System.Data.SqlClient;
using System.Web.UI.WebControls.Adapters;


public partial class _Default : System.Web.UI.Page
{
    private string problem;
    private string zimmer;
    private string objDataSet;


    protected void Page_Load(object sender, EventArgs e)
        {

          Username username = new Username();
          string Vorname = username.getVorname();  
          string Nachname = username.getNachnahme(); 
          this.l_username.Text = Vorname + " " + Nachname;

        }

     protected void Button1_Click(object sender, EventArgs e)
        {
            if (DropDownList1.Text == "Sitzungszimmer auswählen")
                {
                    System.Windows.Forms.MessageBox.Show("Bitte Sitzungszimmer auswählen");
                }
            else
                {
                    problem = TextBox1.Text;
                    zimmer = DropDownList1.Text;
                    Label4.Text = problem + " " + zimmer + " " + l_username.Text;                   
                }

        }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
         {

        }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            AccessDataSource2.SelectCommand = (string)Session["stSQL1"];
        }


    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
           TableAdapter objTableAdapter = new TableAdapter();
           objTableAdapter.UpdateCommand = "Updatebefehl";
           objTableAdapter.update(objDataSet);
           AccessDataSource2.UpdateCommand = (string)Session["stSQL1"];
        }

    protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {
          AccessDataSource2.DeleteCommand = (string)Session["stSQL1"];
        }

    protected void AccessDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {

    }    
}


----------



## deen_90 (17. Dezember 2007)

leider gibt er mir immernoch den gleichen Fehler an.

der wäre:

The type or namespace 'TableAdapter' could not be found(are you missing a using directive or an assembly reference?)


----------



## Mel_One (17. Dezember 2007)

Hm, blöd. Denkfehler meinerseits. Für Tableadapter braucht man wohl ein typisiertes Dataset. Wie hast du das Dataset angelegt? Im Datenexplorer zurechtgeklickt?


----------



## deen_90 (17. Dezember 2007)

ja ein dataset hab ich auch schon gemacht, aber er gibt mir immernoch den gleichen fehler an


----------



## Mel_One (18. Dezember 2007)

Das du ein Dataset gemacht hast, sehe ich. Die Frage ist, ob das typisiert ist. Wenn du über diesen Visual Studio Designer gegangen bist und dir das Dataset zurechtgezogen und -geklickt hast, ist es garantiert typisiert.
In dem Fall liegen die Tableadapter als Unterklassen im Dataset. Das muss so ein Aufruf sein, der so ähnlich wie

```
DataSetTableAdapters.TableAdaperSomething tableAdaper=new DataSetTableAdapters.TableAdaperSomething();
```
abläuft.


----------



## deen_90 (18. Dezember 2007)

Also jetzt wird immer noch der gleiche Fehler angezeigt


----------



## deen_90 (18. Dezember 2007)

also jetzt hab ichs so

        DataSet1TableAdapters objTableAdapter = new DataSet1TableAdapters();
        objTableAdapter.UpdateCommand = "Updatebefehl";
        objTableAdapter.UpdateCommand(objDataSet);
        AccessDataSource2.UpdateCommand = (string)Session["stSQL1"];

momentan kommt jetzt der Fehler:
'DataSet1TableAdapters' is a 'namespace'  but is used like a 'type'


----------



## Mel_One (18. Dezember 2007)

Hm, ja, das ist ja auch ein Namespace. Gib mal "DataSet1TableAdapters" ein und drück dann nen Punkt. In Visual Studio werden dir dann alle Tableadapter angezeigt, die zu diesem Dataset gehören. Davon musst du dir einen ausuchen, und dann sollte es klappen.


----------



## deen_90 (18. Dezember 2007)

bei DataSet1TableAdapters gibt es keine Befehle mehr


----------



## Mel_One (18. Dezember 2007)

Hm, okay, hast du im Dataset-Designer lediglich DataTables angelegt oder TableAdapters?


----------



## deen_90 (18. Dezember 2007)

TableAdapter dort werden dann alle Sql Befehle angezeigt


----------



## Mel_One (18. Dezember 2007)

Hm, strange. Zum Aufbau des ganzen: Wenn du im Datadesigner ein Dataset bearbeitest und dort TableAdapter anlegst, erscheinen die in einem eigenen Namespace, bei dir "DataSet1TableAdapters". Dort werden normalerweise dann die von dir angelegten TableAdapter abgelegt. Ist ein bisschen strange, wenn die dir nicht angeboten werden.


----------

