我已经完成了在桌面上添加数据并且工作正常。我也在我的类上完成了更新和删除功能的编码,但它没有更新表。我的程序中没有发现错误。
这是我的代码:
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();
}
}
此外,我创建了一个创建帐户的用户登录,其中我的表中的代码(更新/删除功能)运行良好。唯一的区别是,我的登录表上有三个字符串,而在我的学生表中,我有很多字符串和一个日期时间。
答案 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中,以便您将看到错误。