2016-05-21 9 views
0

Mein Programm wird meine SQL Server-Datenbank nach der Ausführung nicht aktualisieren. Wenn ich mein Programm ausführe, wird mein DataGridView aktualisiert, wenn ich meine Informationen einfüge, aber es aktualisiert sich nicht in der DataTable.SQL Server-Datatable füllen

private void button1_Click(object sender, EventArgs e) 
{ 
     string query = "INSERT INTO dbo.dataTable(Id,Name,Age) VALUES('" + idTextBox.Text + "','" + nameTextBox.Text + "','" + ageTextBox.Text + "')"; 

     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\employee.mdf;Integrated Security=True;Connect Timeout=30"); 
     SqlCommand cmd; 

     conn.Open(); 
     cmd = new SqlCommand(query, conn); 
     cmd.ExecuteNonQuery(); 

     this.dataTableTableAdapter.Fill(this.employeeDataSet1.dataTable); 
     conn.Close(); 

     SqlDataAdapter adapt = new SqlDataAdapter(cmd); 
     DataTable data = new DataTable(); 

     conn.Open(); 
     adapt.Update(data); 
     conn.Close(); 

     dataTableDataGridView.DataSource = data; 
    } 
+0

davon, welche Art zu gehen ist die Spalte 'Id' in der Tabelle' dbo.dataTable'? Es könnte sein, dass Sie den String von 'idTextBox.Text' in den gleichen Typ von' id' konvertieren müssen. Dasselbe gilt für 'ageTextBox.Text' und' Age'. – surfmuggle

+0

meine id ist vom typ int auch gleich mit dem alter – Seol

+0

Willkommen bei sql injection opfer club. 'idTextBox.Text' ist' hack you '; drop table dataTable - ' –

Antwort

0

Wenn Sie Ihren Datagridview mit dem Designer erstellt, die einen Datensatz, Binding und Tableadapter hinzugefügt, dann sollten Sie Ihre Datagridview korrekt aus der Box konfiguriert werden. Versuchen Sie diese Zeilen auf Kommentar:

//SqlDataAdapter adapt = new SqlDataAdapter(cmd); 
//DataTable data = new DataTable(); 
//conn.Open(); 
//adapt.Update(data); 
//conn.Close(); 
//dataGridView1.DataSource = data; 

ich Ihre button_click Code repliziert und es funktioniert lokal für mich SQL Express verwenden.

0

Basierend auf Ihrem Kommentar nehme ich an, dass die Ursache die fehlende Konvertierung ist. Mit Int32.TryParse können Sie die Zeichenfolge in int konvertieren. Beachten Sie, dass die ' auch

int id, age; 
bool idIsInt = false, ageIsInt = false; 

idIsInt = Int32.TryParse(idTextBox.Text, out id); 
ageIsInt = Int32.TryParse(ageTextBox.Text, out age); 

if(idIsInt && ageIsInt) 
{ 
string query = "INSERT INTO dbo.dataTable(Id,Name,Age) VALUES(" 
     + id + ",'" + nameTextBox.Text + "'," 
     + age + ")"; 
SqlConnection conn = 
new SqlConnection(@"Data Source(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\employee.mdf 
     ;Integrated Security=True;Connect Timeout=30"); 

SqlCommand cmd; 
conn.Open(); 
cmd = new SqlCommand(query, conn); 
cmd.ExecuteNonQuery(); 
}