2012-04-13 9 views
0

Ich entschuldige mich im Voraus, weil ich weiß, dass dies eine sehr grundlegende Frage für die meisten von Ihnen ist, aber ich habe wirklich Mühe, die relevanten Informationen zu finden, fragte ich mich, ob jemand senden könnte ich in die richtige Richtung.Daten von einem Datagrid zurück in SQL Server Datenbank

Ich habe eine Winforms-App und eine SQLserver-Datenbank. Ich weiß, wie man verschiedene Steuerelemente (einschließlich des Datagrids) mit Daten aus meiner Datenbank verknüpft. Worüber ich jedoch kämpfe, ist, wie man die Manipulation von Daten im Datagrid durch den Benutzer zurück in die SQL-Server-Datenbank bringt.

Auch ich weiß, wie man Daten aus einem Textfeld nehmen und verwenden Sie TSQL, um es zurück in die Datenbank zu buchen, aber das Datagrid spielt mich an. Ich weiß, dass es etwas mit Datenbindung zu tun hat, aber ich mache keine großen Fortschritte.

Hier ist, wie ich das Datagrid im Moment bin bevölkern:

string sqlText = "SELECT * FROM tblCaseTypes;"; 
string conStr = cConnectionString.BuildConnectionString(); 
SqlConnection linkToDB = new SqlConnection(conStr); 
SqlCommand sqlCom = new SqlCommand(sqlText, linkToDB); 
SqlDataAdapter myAdapter = new SqlDataAdapter(sqlCom); 
myAdapter.Fill(tsh); 
dataTimesheet.DataSource = tsh; 

ich verschiedene Ressourcen gesucht haben, aber noch nicht alles schrecklich usedful gefunden. Kann mir jemand in Richtung eines guten (Anfänger-) Artikels zeigen, wie man Benutzereingabedaten in einem Datagrid erhält, das in die sqlserver-Datenbank zurückgeschickt wird, woher es kommt?

Antwort

1

ich mit von der Annahme ausgehen, dass die tsh var ein DataSet oder eine Datatable ist.
Wenn dies der Fall ist, kann das Update durch Erstellen eines neuen SqlDataAdapter mit dem gleichen SqlCommand erfolgen, aber anstelle der Fill-Methode verwenden Sie die Update-Methode, die die DataTable oder DataSet aus der DataSource des Grids extrahiert. Vor der Ausführung des Update-Methode setzen Sie die Eigenschaft Select des Dataadapter zum gleichen SqlCommand verwendet Datensätze abzurufen

DataTable dt = dataTimesheet.DataSource as DataTable; 
string sqlText = "SELECT * FROM tblCaseTypes;"; 
string conStr = cConnectionString.BuildConnectionString(); 
SqlConnection linkToDB = new SqlConnection(conStr); 
SqlDataAdapter myAdapter = new SqlDataAdapter(); 
myAdapter.SelectCommand = new SqlCommand(sqlText, linkToDB); 
myAdapter.Update(dt); 

Auf diese Weise können Sie die Belastung für die SqlDataAdapter passieren die entsprechenden INSERT zu bauen, DELETE und UPDATE SqlCommand erforderlich, um Ihre Datenbank zu aktualisieren.

Es sollte jedoch beachtet werden, dass intern der SqlDataAdapter den SelectCommand ausführen muss, um die SQL-Befehle INSERT, UPDATE und DELETE erstellen zu können. Dies kann die Leistung beeinträchtigen.Um eine optimale Leistung zu erreichen, geben Sie Ihre INSERT, DELETE und UPDATE-Befehle zuweisen, sie ausdrücklich zu Insert DeleteCommand und Update Eigenschaften der SqlDataAdapter

einige Referenzen für Sie:
Update database from DataGridView
How To Update a SQL Server Database by Using the SqlDataAdapter Object in Visual C# .NET
DbDataAdapter.Update Method

0

Hier ist ein recht einfaches Beispiel dafür, wie Updates von einem Datagrid zu tun

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.updatecommand.aspx

Grundsätzlich benötigen Sie einen

OnEditCommand="ItemsGrid_Edit" 

Dann in Ihrem

Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) 

Methode Sie brauchen um die Elemente zurück in Textfelder zu werfen, um ihren Wert zu erhalten s

Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox) 

Dann können Sie diese Werte in der SQL-UPDATE

Oh verwenden und Sie sollten wahrscheinlich gespeicherte Prozeduren oder Linq verwenden, anstatt gerade SQL, wenn dies jemals von vielen Benutzern verwendet werden soll.

Auch oberhalb der Code ist VB.net, Sie Tags in Ihrer Frage verwenden sollte zu sagen, welche Sprache du bist

+0

Die ursprüngliche Post hat die [C#] Tag - aber trotzdem danke – PJW

1

Sie sollte Befehle zum Einfügen/Aktualisieren/Löschen in Ihrem Adapter implementieren.

myAdapter.InsertCommand = new SqlCommand("INSERT INTO yourTable VALUES(@param1, @param2)", conn); 
myAdapter.InsertCommand.Parameters.Add("@param1",...); 

tun genau das gleiche mit dem Update und Befehle löschen. Füllen Sie dann Ihr DataSet mit dem Adapter und erstellen Sie es als Datenquelle für Ihr Datagrid.

DataSet ds = new DataSet(); 
myAdapter.Fill(ds); 
dataGrid1.DataSource = ds; 

Wenn Sie Ihre Änderungen in der Datenbank senden Sie die myAdapter.Update Methode nur aufrufen können.

myAdapter.Update(ds); 

Ein schöner Artikel hier: Add, Edit, and Delete in DataGridView

Verwandte Themen