我希望通过动态插入数据库中的文本框中的数据,在单击按钮时在网格视图中显示数据
protected void Button1_Click(object sender, EventArgs e)
{
//string Name = TextBox1.Text;
//string Summary = TextBox2.Text;
//Inserts the FirstName variable into the db-table
SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True");
conn.Open();
SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values ('" + TextBox1.Text + "' , '" + TextBox2.Text + "');",conn);
MyCommand.ExecuteNonQuery();
using (SqlCommand cmd = conn.CreateCommand())
{
SqlCommand com = new SqlCommand("Select * from Table2", conn);
SqlDataAdapter sda = new SqlDataAdapter(com);
DataSet ds = new DataSet();
sda.Fill(ds);
//GridView1.DataSource = ds;
// GridView1.DataBind();
}
conn.Close();
conn.Dispose();
}
我在运行此代码时没有收到任何错误,但它没有在网格视图中显示任何数据
答案 0 :(得分:1)
您必须将数据源作为数据表而不是数据集。
例如:
using (SqlCommand cmd = conn.CreateCommand())
{
SqlCommand com = new SqlCommand("Select * from Table2", conn);
SqlDataAdapter sda = new SqlDataAdapter(com);
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
答案 1 :(得分:0)
除了取消注释这些代码行之外,您还需要将Datasource设置为已填充的数据表而不是DataSet ...
dataGridView1.DataSource = ds.Tables[0];
单独注意,您的初始查询容易受到SQL注入攻击 - 您不应该连接用户输入以形成SQL查询,而是使用参数化查询,例如:
SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values (@tb1, @tb2);", conn);
MyCommand.Parameters.AddWithValue("@tb1", TextBox1.Text);
MyCommand.Parameters.AddWithValue(@"tb2", TextBox2.Text);
MyCommand.ExecuteNonQuery();
您还在使用带有从不使用的SQL命令的using语句
using (SqlCommand cmd = conn.CreateCommand())
应该是
using (SqlCommand com = new SqlCommand("Select * from Table2", conn))
答案 2 :(得分:-1)
您需要取消注释GridView
绑定到数据源的代码,如下所示。
using (SqlCommand cmd = conn.CreateCommand())
{
SqlCommand com = new SqlCommand("Select * from Table2", conn);
SqlDataAdapter sda = new SqlDataAdapter(com);
DataSet ds = new DataSet();
sda.Fill(ds);
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
}
Aliter:创建一个DataTable
而不是DataSet
并使用DataAdapter
填充它。
DataTable dt=new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
尝试一下,如果这对你有用,请告诉我们。
由于