日期:2014-05-18  浏览次数:20792 次

问: C# 删除数据库中的信息时出现的问题
代码如下:
C# code

SqlConnection conn = SqlConn();

            string delStr = "delete GoodInfo where gNo = @no";      //删除命令语句
            SqlCommand cmd = new SqlCommand(delStr, conn);
   
            //添加参数并赋值
            //cmd.Parameters.AddWithValue("@no",no);    //类型, 自动?
            cmd.Parameters.Add("@no", SqlDbType.NChar, 10);
            cmd.Parameters["@no"].Value = no;

            int result = -1;

            try
            {
                conn.Open();
                result = cmd.ExecuteNonQuery(); //当 no = A006的时候,首次执行的时候,为什么会有两行受影响?

                Console.WriteLine(result + "行受影响\n");
            }
            catch (Exception e)
            {
                Console.WriteLine("错误: " + e.Message);
            }
            finally
            {
                conn.Close();           //关闭与数据库的连接
            }

            return result;



运行完之后, 数据库中的信息,也相应地被删除了, 
但我把 no 赋一个 数据库不存在的值的时候, select 一下, 刚才被删除的那条信息,又出现了,

Delete 没起作用,为什么会这样呢? 还是方法不对???

------解决方案--------------------
光看你的代码没有问题,是不是程序别的地方又给添加上了。
------解决方案--------------------
直接
delete GoodInfo where gNo = 'A006'
select * from GoodInfo where gNo = 'A006'
在数据库中执行下,看下结果

估计是你有触发器或有级联操作关系。。。