private void button4_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=s1;Integrated Security=SSPI");
SqlDataAdapter adap = new SqlDataAdapter();
//float c = float.Parse(textBox5.Text);
InitSqlDataAdapter(adap, con);
DataSet ds = new DataSet();
adap.Fill(ds, "book");
MessageBox.Show(ds.Tables["book"].Rows.Count.ToString());
updateDataSource(adap, ds);
con.Close(); }
private void InitSqlDataAdapter(SqlDataAdapter adapter, SqlConnection conn)
{
SqlCommand cmSel = null;
cmSel = new SqlCommand("select * from book", conn);
adapter.SelectCommand = cmSel; cmSel = new SqlCommand("insert into book(编号,书名,价格)values(@id,@sm,@jg)", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
adapter.InsertCommand = cmSel; cmSel = new SqlCommand("Update book set 书名=@sm,价格=@jg where 编号=@id", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
adapter.UpdateCommand = cmSel; cmSel = new SqlCommand("delete from book where 编号=@id", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
adapter.DeleteCommand= cmSel;
}
private void updateDataSource(SqlDataAdapter customers,DataSet decust)
{
int de=0;
for (int i = 0; i < decust.Tables["book"].Rows.Count; i++)
{
DataRow dr = decust.Tables["book"].Rows[i];
if (dr["编号"].ToString() == "002")
{
dr["书名"] = "003";
dr["价格"] = 8.9f;
} if (dr["编号"].ToString().Trim() =="002")
{
de = i; decust.Tables["book"].Rows.RemoveAt(de);
}
}
dataGridView1.DataSource = decust.Tables[0];
DataRow ndr = decust.Tables["book"].NewRow();
ndr["编号"] = textBox3.Text;
ndr["书名"] = textBox4.Text;
ndr["价格"] = decimal.Parse(textBox5.Text);
decust.Tables["book"].Rows.Add(ndr); customers.Update(decust.Tables["book"]);
}
{
SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=s1;Integrated Security=SSPI");
SqlDataAdapter adap = new SqlDataAdapter();
//float c = float.Parse(textBox5.Text);
InitSqlDataAdapter(adap, con);
DataSet ds = new DataSet();
adap.Fill(ds, "book");
MessageBox.Show(ds.Tables["book"].Rows.Count.ToString());
updateDataSource(adap, ds);
con.Close(); }
private void InitSqlDataAdapter(SqlDataAdapter adapter, SqlConnection conn)
{
SqlCommand cmSel = null;
cmSel = new SqlCommand("select * from book", conn);
adapter.SelectCommand = cmSel; cmSel = new SqlCommand("insert into book(编号,书名,价格)values(@id,@sm,@jg)", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
adapter.InsertCommand = cmSel; cmSel = new SqlCommand("Update book set 书名=@sm,价格=@jg where 编号=@id", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
cmSel.Parameters.Add("@sm", SqlDbType.VarChar, 15, "书名");
cmSel.Parameters.Add("@jg", SqlDbType.Money, 15, "价格");
adapter.UpdateCommand = cmSel; cmSel = new SqlCommand("delete from book where 编号=@id", conn);
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
adapter.DeleteCommand= cmSel;
}
private void updateDataSource(SqlDataAdapter customers,DataSet decust)
{
int de=0;
for (int i = 0; i < decust.Tables["book"].Rows.Count; i++)
{
DataRow dr = decust.Tables["book"].Rows[i];
if (dr["编号"].ToString() == "002")
{
dr["书名"] = "003";
dr["价格"] = 8.9f;
} if (dr["编号"].ToString().Trim() =="002")
{
de = i; decust.Tables["book"].Rows.RemoveAt(de);
}
}
dataGridView1.DataSource = decust.Tables[0];
DataRow ndr = decust.Tables["book"].NewRow();
ndr["编号"] = textBox3.Text;
ndr["书名"] = textBox4.Text;
ndr["价格"] = decimal.Parse(textBox5.Text);
decust.Tables["book"].Rows.Add(ndr); customers.Update(decust.Tables["book"]);
}
断点,看sql是什么内容 ID有值吗
不是删除了decust.Tables["book"].Rows然后customers.Update(decust.Tables["book"]);
try catch 一下。 跟踪ID的值
customers.Update(decust.Tables["book"]);
这句放到dataGridView1.DataSource = decust.Tables[0];
之前。
SqlDataAdapter sda;SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
cmSel.Parameters.Add("@id", SqlDbType.VarChar, 15, "编号");
adapter.DeleteCommand= cmSel;
跟踪看一下有没有ID传进去,看看SQL语句是什么
换成 decust.Table["book"].Rows[de].Delete();试一下