namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database =yxw;Integrated Security=True"); private void button1_Click(object sender, EventArgs e)
{
string qid = tb_id.Text; string qName = tb_Name.Text; string qAge = tb_Age.Text; string qemail = tb_email.Text; string qAddress = tb_Address.Text; //SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database =yxw;Integrated Security=True"); SqlCommand cmd = new SqlCommand("Insert Into tb1( ID,Name,Age,email,Address) values('" + qid + "','" + qName + "','" + qAge + "','" + qemail + "','" + qAddress + "')", con); cmd.Connection = con; con.Open(); if (cmd.ExecuteNonQuery() > 0)
{
SqlDataAdapter da = new SqlDataAdapter("select * from tb1", con); DataSet ds = new DataSet(); //调用 DataAdapter 的 Fill 方法,并传入将要在其中加载数据的 DataSet 或 DataTable 例如: //sqlDataAdapter1.Fill(dataset1.Tables["Customers"]); da.Fill(ds, "tb1"); dataGridView1.DataSource = ds.Tables["tb1"];
} con.Close(); } private void Form1_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“yxwDataSet.tb1”中。您可以根据需要移动或移除它。 this.tb1TableAdapter.Fill(this.yxwDataSet.tb1);
} private void button2_Click(object sender, EventArgs e)
{ int j = dataGridView1.SelectedRows.Count; int k = dataGridView1.RowCount; if (MessageBox.Show("您确认要删除这 " + Convert.ToString(j) + "项吗? ", "系统提示 ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) // 删除前给出提示
{ }
else
{
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
}
}
}
}
}
}
我现在能实现在控件dataGridView中删除整行数据了但是怎么才能同时也删除数据空中相应行的数据呢?请帮忙给出具体代码谢谢~!
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database =yxw;Integrated Security=True"); private void button1_Click(object sender, EventArgs e)
{
string qid = tb_id.Text; string qName = tb_Name.Text; string qAge = tb_Age.Text; string qemail = tb_email.Text; string qAddress = tb_Address.Text; //SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database =yxw;Integrated Security=True"); SqlCommand cmd = new SqlCommand("Insert Into tb1( ID,Name,Age,email,Address) values('" + qid + "','" + qName + "','" + qAge + "','" + qemail + "','" + qAddress + "')", con); cmd.Connection = con; con.Open(); if (cmd.ExecuteNonQuery() > 0)
{
SqlDataAdapter da = new SqlDataAdapter("select * from tb1", con); DataSet ds = new DataSet(); //调用 DataAdapter 的 Fill 方法,并传入将要在其中加载数据的 DataSet 或 DataTable 例如: //sqlDataAdapter1.Fill(dataset1.Tables["Customers"]); da.Fill(ds, "tb1"); dataGridView1.DataSource = ds.Tables["tb1"];
} con.Close(); } private void Form1_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“yxwDataSet.tb1”中。您可以根据需要移动或移除它。 this.tb1TableAdapter.Fill(this.yxwDataSet.tb1);
} private void button2_Click(object sender, EventArgs e)
{ int j = dataGridView1.SelectedRows.Count; int k = dataGridView1.RowCount; if (MessageBox.Show("您确认要删除这 " + Convert.ToString(j) + "项吗? ", "系统提示 ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) // 删除前给出提示
{ }
else
{
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
}
}
}
}
}
}
我现在能实现在控件dataGridView中删除整行数据了但是怎么才能同时也删除数据空中相应行的数据呢?请帮忙给出具体代码谢谢~!
if (MessageBox.Show("您确认要删除这 " + Convert.ToString(j) + "项吗? ", "系统提示 ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) // 删除前给出提示
{ }
else
{
con.open();
SqlCommand cmd=con.CreateCommand();
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
string str=datagridview1.rows[i,?].value.tostring();//这里?为定义的Key字段列
cmd.CommandText="Delete * from Table where ID='"+str+"'";
cmd.excu.....();//执行SQL语句;
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);//删除行
cmd.dispose();//释放cmd,不然会产生I个cmd;
}
}
con.close();//关闭连接
}
那你改正如下
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
yxwDataSet.Table[0].Row[i].Deleted()//记住要把DataSet中把要删除的行标记为Deleted
}
}
最后在去调用SqLDataAdapter.Update(yxwDataSet)来把删除的更新到数据库中还有你写的那段代码
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);直接用Remove的话最后会出现错误的
{ }
else
{
con.open();
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
SqlCommand cmd=con.CreateCommand();//改下,把这个放里面来。 string str=datagridview1.rows[i,?].value.tostring();//这里?为定义的Key字段列
cmd.CommandText="Delete * from Table where ID='"+str+"'";
cmd.excu.....();//执行SQL语句;
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);//删除行
cmd.dispose();//释放cmd,不然会产生I个cmd;
}
}
con.close();//关闭连接
}
就是这段“string str=datagridview1.rows[i,?].value.tostring();//这里?为定义的Key字段列”该怎么定义Key字段列?
rows[i,0].value.tostring();以此为索引去删除数据库中的数据
我估计是下面这段错了到底在哪我还没找到 郁闷了~!
cmd.CommandText="Delete * from Table where ID='"+str+"'";
cmd.ExecuteNonQuery();
你看看把*去掉就行了
string str=datagridview1.rows[i,?].value.tostring();//这里?为定义的Key字段列
cmd.CommandText="Delete * from Table where ID='"+str+"'";
cmd.excu.....();//执行SQL语句;
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);//删除行
cmd.dispose();//释放cmd,不然会产生I个cmd;我加的这些代码不行吗?你有没有加进去啊?你写的是没有数据操作,所以才会只删除datagridview中的数据!
if (MessageBox.Show("您确认要删除这 " + Convert.ToString(j) + "项吗? ", "系统提示 ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)你要的是选YES删除数据,还是NO删除数据啊???????????????????????
这样的话就可以删除数据库表中ID是003这一行了是不是这段 string str=dataGridView1.Rows[i].Cells[j].Value.ToString();这段代码中的str定义的问题?
2.使用楼上sjm2003的代码
[引]
如果你DataGridView是帮定到yxwDataSet的话
那你改正如下
for (int i = 0; i < (k-1); i++)
{ if (dataGridView1.Rows[i].Selected)
{
yxwDataSet.Table[0].Row[i].Deleted()//记住要把DataSet中把要删除的行标记为Deleted
}
}
最后在去调用SqLDataAdapter.Update(yxwDataSet)来把删除的更新到数据库中还有你写的那段代码
dataGridView1.Rows.Remove(dataGridView1.Rows[i]);直接用Remove的话最后会出现错误的
.......;//窗体构造代码 略
private void button1_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
try
{
cn.Open();//打开数据库
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
{
if (dataGridView1.Rows[i].Selected == true)
{
OleDbCommand cmd = cn.CreateCommand();
cmd.CommandText = "Delete from TbStoreChanpinxinxi where St_CPID='" + dataGridView1.Rows[i].Cells[0].Value.ToString().Trim() + "'";//把这SQL语句改成你的。我用的是ACCESS。
if (cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("第"+i.tostring()+"条数据删除成功");//测试用 ,看看自己写的循环能循环几次,是否和选择的数据条数相同
dataGridView1.Rows.RemoveAt(i);//删除被选中的行。
}
cmd.Dispose();
}
}
cn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}