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

ADO が現在のロケールを使用して日時オブジェクトを文字列に変換しているときに、日付の問題が発生する可能性があります。むしろやってみたかった

DateTime.Parse(tbBirthday.Text).Date

ユーザーが指定した通りleppie

問題 2 については、挿入用と更新用の SQL 式を調べてください。Inside Insert を使用して@columnNameおり、 update では?sign を使用しています。Insert SQL のように、パラメータに完全な名前を使用してみてください。@columnName

于 2012-09-07T15:49:29.160 に答える
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 に答える
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 に答える