程序中定义了清空按钮,但是按了之后有更新成功提示,实际上数据库内数据并没清空

.Net技术 码拜 7年前 (2015-05-10) 812次浏览 0个评论

我的思路是现将需要清空的表从数据库内选择出来,然后填充到dataset中,接着将dataset中数据清空,最后将清空后的的dataset更新到数据库 以达到清空数据库内某个数据表的目的,但是现在的问题是 程序运行都没问题 就是数据没清空(数据库内相应数据表的信息没改变)。我不知道是哪个环节出问题了,各位高手帮我看看代码呢,谢谢!
以下是代码:
        private void button1_Click(object sender, EventArgs e)
        {
            string connectString = “Data Source=.;Initial Catalog=FinSystem;User ID=sa;pwd=1992106713”;
            SqlConnection sqlCnt = new SqlConnection(connectString);
            sqlCnt.Open();
            //String sqlget = “Select * from Table_Income;Select * from Table_Expend;Select * from Table_Budget”;
            DataSet myDataSet = new DataSet();//创建dataset对象
            if (this.comboBox1.Text==”收入数据集”)
            {
                String sqlget= “Select * from Table_Income”;
                SqlDataAdapter myDataAdapter= new SqlDataAdapter(sqlget, sqlCnt);
                myDataAdapter.Fill(myDataSet, “Table_Income”);
                if (MessageBox.Show(“您确定清空所有预算数据信息?”, “确认清空”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    myDataSet.Clear();
                    myDataSet.AcceptChanges();
                    myDataAdapter.Update(myDataSet, “Table_Income”);
                    MessageBox.Show(“数据清空已成功!”, “提示”);
                }
                else
                {
                    return;

                }

            }

10分
如果未指定 INSERT、UPDATE 或 DELETE 语句,Update 方法会生成异常。 但是,如果设置 .NET Framework 数据提供程序的 SelectCommand 属性,则可以创建 SqlCommandBuilder 或 OleDbCommandBuilder 对象来为单个表更新自动生成 SQL 语句。 然后,CommandBuilder 将生成任何其他未设置的 SQL 语句。 此生成逻辑要求 DataSet 中存在键列信息。 有关更多信息,请参见使用 CommandBuilder 生成命令。 

10分
这样是不能删除数据库表中的数据的,想清除表中数据执行sql 的删除语句
引用 2 楼 baidu_27474941 的回复:

这样是不能删除数据库表中的数据的,想清除表中数据执行sql 的删除语句

**//***
是这样吗
            string connectString = “Data Source=.;Initial Catalog=FinSystem;User ID=sa;pwd=1992106713”;
            SqlConnection sqlCnt = new SqlConnection(connectString);
            sqlCnt.Open();
            //String sqlget = “Select * from Table_Income;Select * from Table_Expend;Select * from Table_Budget”;
            DataSet myDataSet = new DataSet();//创建dataset对象
            if (this.comboBox1.Text==”收入数据集”)
            {
                SqlCommand mySqlCommand = new SqlCommand();
                mySqlCommand.CommandType = CommandType.Text;
                mySqlCommand.CommandText = “Select * from Table_Income”;//(日期,支出名称,消费类型,金额,用户)values(@Date,@ZCMC,@XFLX,@JinE,@YongHu)
                mySqlCommand.Connection = sqlCnt;
                SqlDataAdapter myDataAdapter = new SqlDataAdapter(“Select * from Table_Income”, sqlCnt);
                myDataAdapter.SelectCommand = mySqlCommand;
                myDataAdapter.Fill(myDataSet, “Table_Income”);
                if (MessageBox.Show(“您确定清空所有预算数据信息?”, “确认清空”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    myDataSet.Tables[“Table_Income”].Clear();
                    if (myDataSet.Tables[“Table_Income”] == null)
                    {
                        SqlCommandBuilder cmd = new SqlCommandBuilder(myDataAdapter);
                        myDataAdapter.Update(myDataSet, “Table_Income”);
                        MessageBox.Show(“数据清空已成功!”, “提示”);
                    }
                }
                else
                {
                    return;

                }

            }

引用 2 楼 baidu_27474941 的回复:

这样是不能删除数据库表中的数据的,想清除表中数据执行sql 的删除语句

嗯 我试试

10分
 if (MessageBox.Show("您确定清空所有预算数据信息?", "确认清空", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    myDataSet.Tables["Table_Income"].Clear();
                    if (myDataSet.Tables["Table_Income"] == null)
                    {
                        SqlCommandBuilder cmd = new SqlCommandBuilder(myDataAdapter);
                        myDataAdapter.Update(myDataSet, "Table_Income");
string sql="delete Table_Income";
SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery()
                        MessageBox.Show("数据清空已成功!", "提示");
                    }
                }
引用 4 楼 baidu_27474941 的回复:
 if (MessageBox.Show("您确定清空所有预算数据信息?", "确认清空", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    myDataSet.Tables["Table_Income"].Clear();
                    if (myDataSet.Tables["Table_Income"] == null)
                    {
                        SqlCommandBuilder cmd = new SqlCommandBuilder(myDataAdapter);
                        myDataAdapter.Update(myDataSet, "Table_Income");
string sql="delete Table_Income";
SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery()
                        MessageBox.Show("数据清空已成功!", "提示");
                    }
                }

还是不行啊

10分
引用 5 楼 lucky566 的回复:
Quote: 引用 4 楼 baidu_27474941 的回复:
 if (MessageBox.Show("您确定清空所有预算数据信息?", "确认清空", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    myDataSet.Tables["Table_Income"].Clear();
                    if (myDataSet.Tables["Table_Income"] == null)
                    {
                        SqlCommandBuilder cmd = new SqlCommandBuilder(myDataAdapter);
                        myDataAdapter.Update(myDataSet, "Table_Income");
string sql="delete Table_Income";
SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery()
                        MessageBox.Show("数据清空已成功!", "提示");
                    }
                }

还是不行啊

断点看看哪里出错???
 cmd.Connection = sqlCnt;
有没有改自己的连接??

10分
用SqlCommand,不是一条sql语句就搞定删除了吗

using(SqlCommand cmd = new SqlCommad("delete from tablename where col1=" + para1, con))
{
 con.open();
 cmd.ExecuteNonQuery();
 con.Close();
}
truncate table 表名
谢谢楼上各位指点,我自己改好了,代码如下:
 string connectString = “Data Source=.;Initial Catalog=FinSystem;User ID=sa;pwd=1992106713”;
            SqlConnection sqlCnt = new SqlConnection(connectString);
            sqlCnt.Open();
            DataSet myDataSet = new DataSet();//创建dataset对象
            if (this.comboBox1.Text==”收入数据集”)
            {

                SqlCommand mySqlCommand = new SqlCommand();
                mySqlCommand.Connection = sqlCnt;
                mySqlCommand.CommandType = CommandType.Text;
                mySqlCommand.CommandText = “Delete Table_Income”;
                SqlDataAdapter myDataAdapter = new SqlDataAdapter();
                myDataAdapter.SelectCommand = new SqlCommand(“Delete Table_Income”, sqlCnt);
                myDataAdapter.Fill(myDataSet, “Table_Income”);
                if (MessageBox.Show(“您确定清空所有收入数据?”, “确认清空”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    mySqlCommand.ExecuteNonQuery();
                    MessageBox.Show(“数据清空已成功!”, “提示”);   
                }
                else
                {
                    return;
                }


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明程序中定义了清空按钮,但是按了之后有更新成功提示,实际上数据库内数据并没清空
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!