如何使用OOP在C#中更新/删除表中的数据?

时间:2014-08-18 03:53:39

标签: c# sql oop oracle11g crud

我已经完成了在桌面上添加数据并且工作正常。我也在我的类上完成了更新和删除功能的编码,但它没有更新表。我的程序中没有发现错误。

这是我的代码:

public void StudentUpdate(string id, string lastname, string firstname, string middlename, string suffix, string age, string gender, string paddress, DateTime birthday)
{
    result.Query = "Update tbl_student set lastname = '" + lastname + "', firstname = '" + firstname + "', middlename = '" + middlename + "', suffix = '" + suffix + "', age = '" + age + "', gender = '" + gender + "', pmt_address = '" + paddress + "', birthday = to_date('" + String.Format("{0:MM/dd/yyyy}", birthday.ToShortDateString()) + "','mm/dd/yyyy') where std_id = '" + id + "'";
    result.Transaction = true;
    result.ExecuteNonQuery();
    StudentCommit();
    result.Close();
}

public void StudentDelete(string id)
{
    result.Query = "Delete from tbl_student where std_id = '" + id + "'";
    result.ExecuteNonQuery();
    StudentCommit();
    result.Close();
}

public void StudentCommit()
{
    if (!result.Commit())
    {
        result.Rollback();
    }
}

此外,我创建了一个创建帐户的用户登录,其中我的表中的代码(更新/删除功能)运行良好。唯一的区别是,我的登录表上有三个字符串,而在我的学生表中,我有很多字符串和一个日期时间。

2 个答案:

答案 0 :(得分:0)

更新声明的选择部分很可能不会找到任何记录:http://weblogs.asp.net/stevewellens/why-sql-updates-fail-three-reasons

而且,正如其他人指出的那样,构建像你一样的字符串会使代码容易受到SQL注入攻击。如果它是内部应用程序或家庭作业,那不是什么大问题,否则你应该使用parametrized queries

答案 1 :(得分:0)

我认为是因为age = '" + age + "'

应为age="+age+",

你需要删除引用

因为它是整数

以及此代码where std_id = '" + id + "'"

应为where std_id = " + id;

我认为id也是int但是你把它放在引号内,因为sql中的拼写错误,c#不知道错误是什么,所以如果你想测试你的代码,那么它在sql中,以便您将看到错误。