如题啊,我的语句是:(已经可以在DataRow里面删除了,但是就是源数据库里面的么变化!)
我的语句怎么改一下啊!!急死了,搞了3天了!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
private void button_delet_Click(object sender, System.EventArgs e)
{
if(MessageBox.Show("你想删除记录吗?","消息提示",System.Windows.Forms.MessageBoxButtons.YesNo,System.Windows.Forms.MessageBoxIcon.Warning) == DialogResult.Yes)
          {
          DataRow dr;
string vSNO = this.textBox_sno.Text;
dr = this.dataSet1.Tables["Table"].Rows.Find(vSNO);   
try
{
this.dataSet1.Tables["Table"].Rows.Remove(dr);
//-this.sqlDataAdapter1.Update(dataSet1,"Table");
int vScore = Int32.Parse(this.textBox_score.Text);
string deleteStr = "delete from student where Sno="+vScore.ToString();
SqlCommand deleteCmd=new SqlCommand(deleteStr,sqlConnection1);
deleteCmd.Parameters.Add(new SqlParameter("@Score",SqlDbType.NChar,4));
deleteCmd.Parameters["@Score"].Value = vScore;
deleteCmd.Connection.Open();
deleteCmd.ExecuteNonQuery();
deleteCmd.Connection.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}

解决方案 »

  1.   

    this.dataSet1.Tables["Table"].Rows.Remove(dr);
    //-this.sqlDataAdapter1.Update(dataSet1,"Table");
    int vScore = Int32.Parse(this.textBox_score.Text);
    string deleteStr = "delete from student where Sno="+vScore.ToString();
    SqlCommand deleteCmd=new SqlCommand(deleteStr,sqlConnection1);
    deleteCmd.Connection.Open();
    deleteCmd.ExecuteNonQuery();
    deleteCmd.Connection.Close();
      

  2.   

    那说明"delete from student where Sno="+vScore.ToString();
    这里不对
    看看你的vScore是什么,是否是正确的参数
    是否有左右的空格有关系delete from student干脆你写成上面的,看能不能把整个表都删了
      

  3.   

    先纠正个问题啊,我上面的删除语句有问题啊,呵呵,很马虎:我应该写这样的:
    string deleteStr ="delete from Student where Score ="+vScore.ToString();这样写后,再执行有问题提示说
    ======================
    不支持关键字“delete from Student where Score ”
    =========================================
    什么意思啊??我在sqL里面验证了语句是对的啊!!
      

  4.   

    看下是不是因为数据库里本来就没有Score=vScore的记录啊....
      

  5.   

    好了,谢谢你了,我终于搞好了,是改了上面的代码的,没有用
    deleteCmd.Parameters.Add(new SqlParameter("@Score",SqlDbType.NChar,4));
    而是用的你说的那个语句,下面就可以了::
    string deleteStr ="delete from Student where (Score ="+vScore.ToString()+")";
    SqlConnection conn=new SqlConnection(this.sqlConnection1.ConnectionString);
    SqlCommand deleteCmd=new SqlCommand(deleteStr,conn);
    conn.Open();
    deleteCmd.ExecuteNonQuery();
    conn.Close();我新建了个连接的,去掉看行不,还是谢谢你了,感激不尽!

      

  6.   

    this.dataSet1.Tables["Table"].Rows.Remove(dr);
    这一句中Rows.Remove(dr)功能是删除行。
    要删除期中一条记录的其中一个值的话可以这样
    //更新行
            DataRow dr = ds.Tables[Table].Rows[0];//Rows[0]为匹配的行
            dr["Score"] = "";