C# 当DELETE命令运行正常时,表中的值不会被删除

C# 当DELETE命令运行正常时,表中的值不会被删除,c#,.net,ms-access,datagridview,delete-row,C#,.net,Ms Access,Datagridview,Delete Row,我为一个组织开发了管理系统。我的表单中有许多DataGridView。对于每一个删除操作,我都有相同的命令(在这里分别是单元格内容单击事件),正如您在下面看到的。在某个地方,它工作正常,并且正在从表中删除值。但在另一个表中,当我在名为delete的datagridview中单击按钮时,在单元格内容单击事件中,我应该从数据库中删除该实体的记录。单击时,行被删除,但当我刚刚打开数据库时,值仍然存在 我的朋友在这里: private void data_grid2_CellContentCli

我为一个组织开发了管理系统。我的表单中有许多DataGridView。对于每一个删除操作,我都有相同的命令(在这里分别是单元格内容单击事件),正如您在下面看到的。在某个地方,它工作正常,并且正在从表中删除值。但在另一个表中,当我在名为delete的datagridview中单击按钮时,在单元格内容单击事件中,我应该从数据库中删除该实体的记录。单击时,行被删除,但当我刚刚打开数据库时,值仍然存在

我的朋友在这里:

    private void data_grid2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // Result's tab's Gridview
            int m = 0;
            int currentRow = int.Parse(e.RowIndex.ToString());
            try
            {
                string name = data_grid2.CurrentRow.Cells["RollNo"].Value.ToString();
                m = int.Parse(name);
            }
            catch (Exception ex) 
            {
                throw;
            }

            if (data_grid2.Columns[e.ColumnIndex] == editButton && currentRow >= 0)
            {

            }

            else if (data_grid2.Columns[e.ColumnIndex] == deleteButton && currentRow >= 0)
            {
                string queryDeleteString = "DELETE * FROM finalResult where RollNo = " + m + "";
                OleDbCommand sqlDelete = new OleDbCommand();
                sqlDelete.CommandText = queryDeleteString;
                sqlDelete.Connection = database;
                sqlDelete.ExecuteNonQuery();
                string queryString = "SELECT RollNo, RegYear, faculty, program, examNature, finalmarksObt, totalMarks, Percentage FROM finalResult";
                loadResults(queryString);

            }
}
幕后可能有什么问题?
我的访问有点生疏,但我相信删除语法仍然与Sql Server相同

string queryDeleteString = "DELETE * FROM finalResult where RollNo = " + m + "";
您的语法无效,因为您正在尝试删除*。它只是简单的删除

string queryDeleteString = "DELETE FROM finalResult where RollNo = " + m + "";

顺便说一句,这段代码适合sql注入。

谢谢您的关注,先生,但它也不能正常工作。你能告诉我这可能是由于我的数据库所在文件夹的权限受到干扰造成的吗?是的,我肯定会用反sql注入技术来屏蔽它,先生。非常感谢您指出。您是否验证了m是您认为的想法,并且存在于数据库中?是的,先生,我已经验证了。现在我删除了一个数据库,并复制了一个新的数据库,这是我为了备份而创建的。现在它可以正常工作了。我认为我在我的项目中还免费添加了数据源,因为我得到了两个数据库文件。我想这可能是因为双方都有冲突。不是吗?老实说,没有足够的信息让我知道。也就是说,很高兴它似乎对你有用:)你的连接字符串是什么?您正在使用快捷数据目录吗?如果是,是否在项目文件之间列出了MDB文件,并将“复制到输出目录”设置为“始终复制”?字符串连接字符串=@“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=RAIMS.accdbAll right这意味着您使用的数据库与应用程序的启动路径相同。在Visual Studio中,这是BIN\DEBUG文件夹。在项目文件之间是否列出了ACCDB文件?如果是,其属性“复制到输出目录”是什么?Sir其已设置为“始终复制”。始终复制意味着每次运行VS调试会话时,VS都会将原始ACCDB文件从项目文件夹复制到BIN\debug。正在销毁上一个会话所做的更改。通常,project文件夹中的文件已准备好部署,其中包含需要发送给客户的基本数据。BIN\DEBUG中的是您的工作数据。如果更新,请将属性更改为“复制”。因此,只有在更改架构或数据时,才会将其复制到bin\debug。请注意,Access会更改其文件,如果不做任何更改,也只需打开它即可