1

这是代码的一部分..

//这里是插入

OleDbCommand command = new OleDbCommand();

command.CommandText = "INSERT INTO tblUsersAccount (Username,[Password],Firstname,     MiddleName, Lastname,Birthday,ContactNo,DateCreated,DateModified) values (@Username,@Password,@Firstname,@MiddleName,@Lastname,@Birthday,@ContactNo,@DateCreated,@DateModified)";

command.Parameters.Add("@Username", OleDbType.Char).Value = tbUsername.Text;
command.Parameters.Add("@Password", OleDbType.Char).Value = tbPassword.Text;
command.Parameters.Add("@Firstname", OleDbType.Char).Value = tbFirstname.Text;
command.Parameters.Add("@MiddleName", OleDbType.Char).Value = tbMiddleName.Text;
command.Parameters.Add("@Lastname", OleDbType.Char).Value = tbLastname.Text;
command.Parameters.Add("@Birthday", OleDbType.Date).Value =DateTime.Parse(tbBirthday.Text);
command.Parameters.Add("@ContactNo", OleDbType.Char).Value = tbContactNo.Text;
command.Parameters.Add("@DateCreated", OleDbType.Date).Value = DateTime.Now;
command.Parameters.Add("@DateModified", OleDbType.Date).Value = DateTime.Now;
command.ExecuteNonQuery();

//这里是更新

OleDbCommand command = new OleDbCommand();

command.CommandText = "UPDATE tblUsersAccount SET Password = ?, Firstname = ?, MiddleName = ?, Lastname = ?, Birthday = ?, ContactNo = ? WHERE Username = ?";

connect.ConnectionString = connectionString;
connect.Open();
command.Connection = connect;

command.Parameters.Add("@Username", OleDbType.Char).Value = tbUsername.Text;
command.Parameters.Add("@Password", OleDbType.Char).Value = tbPassword.Text;
command.Parameters.Add("@Firstname", OleDbType.Char).Value = tbFirstname.Text;
command.Parameters.Add("@MiddleName", OleDbType.Char).Value = tbMiddleName.Text;
command.Parameters.Add("@Lastname", OleDbType.Char).Value = tbLastname.Text;
command.Parameters.Add("@Birthday", OleDbType.Date).Value =DateTime.Parse(tbBirthday.Text);
command.Parameters.Add("@ContactNo", OleDbType.Char).Value = tbContactNo.Text;
command.ExecuteNonQuery();

问题#1:更新部分出错。错误说,“该字符串未被识别为有效的日期时间。从索引 0 开始有一个未知单词。” 这是生日部分。即使日期格式正确,例如 09/08/11。它适用于插入部分。

问题 #2:当我尝试删除生日部分以查看除了问题 #1 之外是否还有其他错误时,出现错误“更新语句中的语法错误”。

对不起..我只是编程新手。并感谢您的帮助。上帝保佑。

4

4 回答 4

1

更新失败,因为参数的顺序不正确。
OleDb ADO 提供程序要求您按照它们在 sql 更新字符串中出现的确切顺序将参数添加到集合中

尝试在最后移动 UserName 参数

OleDbCommand command = new OleDbCommand(); 

command.CommandText = "UPDATE tblUsersAccount SET [Password] = ?, Firstname = ?, " + 
                      "MiddleName = ?, Lastname = ?, Birthday = ?, ContactNo = ? " + 
                      "WHERE Username = ?"; 

connect.ConnectionString = connectionString; 
connect.Open(); 
command.Connection = connect; 

command.Parameters.Add("@Password", OleDbType.Char).Value = tbPassword.Text; 
command.Parameters.Add("@Firstname", OleDbType.Char).Value = tbFirstname.Text; 
command.Parameters.Add("@MiddleName", OleDbType.Char).Value = tbMiddleName.Text; 
command.Parameters.Add("@Lastname", OleDbType.Char).Value = tbLastname.Text; 
command.Parameters.Add("@Birthday", OleDbType.Date).Value =DateTime.Parse(tbBirthday.Text); 
command.Parameters.Add("@ContactNo", OleDbType.Char).Value = tbContactNo.Text; 
command.Parameters.Add("@Username", OleDbType.Char).Value = tbUsername.Text; 
command.ExecuteNonQuery(); 

现在参数的顺序与它们出现在更新字符串中的顺序相同,并且可以正确理解日期值。

于 2012-09-07T15:45:32.940 回答
1

日期问题可能是,而 ADO 正在使用当前语言环境将您的日期时间对象转换为字符串。我宁愿尝试

DateTime.Parse(tbBirthday.Text).Date

正如用户指定的那样leppie

对于问题 #2,查看用于插入和更新的 SQL 表达式。在 Insert 中,您正在使用@columnName,而在 update 中,您正在使用?sign。尝试使用参数的全名,如插入 SQL:@columnName

于 2012-09-07T15:49:29.160 回答
0

如果您只对日期感兴趣(看起来如此):

DateTime.Parse(tbBirthday.Text).Date

或者

DateTime.Today

在其他情况下。

于 2012-09-07T15:42:50.037 回答
0

尝试使用 DateTime 的 Date 属性

 command.CommandText = "INSERT INTO tblUsersAccount (Username,[Password],Firstname,     MiddleName, Lastname,Birthday,ContactNo,DateCreated,DateModified) values (@Username,@Password,@Firstname,@MiddleName,@Lastname,@Birthday,@ContactNo,@DateCreated,@DateModified)";

command.Parameters.Add("@Username", OleDbType.Char).Value = tbUsername.Text;
command.Parameters.Add("@Password", OleDbType.Char).Value = tbPassword.Text;
command.Parameters.Add("@Firstname", OleDbType.Char).Value = tbFirstname.Text;
command.Parameters.Add("@MiddleName", OleDbType.Char).Value = tbMiddleName.Text;
command.Parameters.Add("@Lastname", OleDbType.Char).Value = tbLastname.Text;
command.Parameters.Add("@Birthday", OleDbType.Date).Value =DateTime.Parse(tbBirthday.Text).Date;//<---
command.Parameters.Add("@ContactNo", OleDbType.Char).Value = tbContactNo.Text;
command.Parameters.Add("@DateCreated", OleDbType.Date).Value = DateTime.Now.Date; //<---
command.Parameters.Add("@DateModified", OleDbType.Date).Value = DateTime.Now.Date;//<---
于 2012-09-07T15:43:43.557 回答