简体   繁体   中英

Populating SQL Server Datatable

My program will not update my SQL Server database after executing. When I run my program my DataGridView updates when I insert my information, but it will not update itself in the dataTable.

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;
    }

If you created your DataGridView using the designer which added a dataset, bindingsource, and tableadapter, then your DataGridView should be configured correctly out of the box. Try commented out these lines:

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

I replicated your button_click code and it works locally for me using Sql Express.

Based on your comment i assume the cause is the missing conversion. Using Int32.TryParse you can convert the string to int. Be aware that the ' have to go as well

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();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM