2012-09-07 6 views
1

에서이 시작된다 UPDATE위한 ..문자열이 유효한 DateTime으로 인식되지 않았습니다. 알 수없는 단어가 인덱스 0 여기

// 여기 INSERT

위한거야
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 : 업데이트 부분에 오류가 있습니다. 오류는 "문자열이 유효한 DateTime으로 인식되지 않았습니다. 색인 0에서 시작하는 알 수없는 단어가 있습니다." 생일 부분에 있습니다. 날짜가 09/08/11과 같은 올바른 형식 일지라도 삽입 부분에서 작동합니다.

문제 # 2 : 문제 1 번 이외의 다른 오류가 있는지 확인하기 위해 생일 부분을 제거하려고하면 "업데이트 문에 구문 오류가 있습니다."라는 오류가 있습니다.

죄송합니다 .. 프로그래밍에 처음 들어 왔습니다. 도와 줘서 고마워. 신의 축복.

+0

2011 년 9 월 8 일 또는 2011 년 8 월 9 일 또는 2009 년 8 월 11 일에 대해 이야기하고 있는지 여부는 알 수 없습니다. 1911 년 9 월 8 일 또는 다른 가능성들. 내 컴퓨터에서'DateTime.Parse (@ "09/08/11")'을 실행하면 2009-08-11 00:00:00이 되겠지만 모든 설정에 맞지는 않습니다. 사용하는 규칙을 적용하도록 코드를 설정해야하지만 그 규칙을 알지 못하기 때문에이를 수행하는 방법을 조언 할 수는 없습니다. –

+0

@ 존 한나 it 's mm/dd/yy – Buvbuv

+0

.. 문제를 발견했습니다. 열 이름 "암호"입니다. 예약어 일 수 있습니다. 나는 그것을 [비밀번호] 대괄호로 묶고 작동합니다! : D 내 질문에 답변 해 주신 분들께 정말 감사드립니다. :) – Buvbuv

답변

0

당신은 (그렇게 보인다) 날짜에만 관심이있는 경우 :

DateTime.Parse(tbBirthday.Text).Date

또는 다른 경우

DateTime.Today

.

0

는 매개 변수가 올바른 순서로하지 않기 때문에 업데이트가 실패 날짜 시간

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;//<--- 
1

날짜 속성을 시도합니다.
OLEDB를 ADO 공급자가 마지막에 사용자 이름 매개 변수를 이동 그들은 SQL 업데이트 문자열에

시도를 표시하는 정확한 순서로 컬렉션에

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(); 

지금을 매개 변수를 추가해야합니다 매개 변수의 순서는 업데이트 문자열에 표시되고 날짜 값을 올바르게 이해하는 것과 같습니다.

+0

+1 : 좋은 캐치. – leppie

+0

여전히 같은 오류입니다. 업데이트 문에서 구문 오류가 발생했습니다. – Buvbuv

+0

암호 필드입니까? 삽입에서 대괄호 안에있는 것을 볼 수 있습니다. 데이터베이스의 예약어입니다 ([액세스 가능성?] (http://support.microsoft.com/kb/321266)) – Steve

1

ADO가 현재 로캘을 사용하여 날짜 - 시간 개체를 문자열로 변환하는 동안 날짜 문제 일 수 있습니다. 나는 시도했다.

DateTime.Parse(tbBirthday.Text).Date 

사용자가 leppie으로 지정했다.

문제 # 2에 대해서는 instert 및 업데이트에 대한 SQL 식을 살펴보십시오. 삽입 내부에 @columnName을 사용하고 있으며 업데이트시 ? 부호를 사용하고 있습니다. SQL 삽입과 같이 매개 변수의 전체 이름을 사용하십시오. @columnName

+0

삽입에서 사용한 것과 같은 것을 사용하려고했지만 작동하지 않습니다. – Buvbuv

관련 문제