2013-10-29 4 views
1

날짜 열을 포함하여 SQLite 데이터베이스에 데이터를 삽입하려고합니다. 그러나 아래의 코드에서 쿼리를 실행할 때 LastLogin 필드는 절대로 채워지지 않습니다. 또한 Created 필드는 기본값이 CURRENT_TIMESTAMP이더라도 비어 있습니다. 쿼리의 다른 모든 필드가 올바르게 채워집니다. 아무도 왜 이것이라고 말할 수 있습니까? SQLite DB에 Date() 값을 삽입 할 수 없습니다.

SQLite는의 테이블 SQL이다 :

CREATE TABLE [User] (
    [Id] INTEGER PRIMARY KEY NOT NULL, 
    [CredentialsToken] TEXT NULL, 
    [GivenName] TEXT NULL, 
    [FamilyName] TEXT NULL, 
    [Created] DATE DEFAULT CURRENT_TIMESTAMP NULL, 
    [LastUpdated] DATE NULL, 
    [LastLogin] DATE NULL 
) 

이것은 내 데이터 삽입 AS : 또한

private const CREATE_USER:String = "INSERT INTO User (Id, CredentialsToken, GivenName, FamilyName, LastLogin) VALUES (:id, :token, :givenName, :familyName, :lastLogin)"; 

public function createUser(args:Array):void 
{   
    if (args[0] is DatabaseResponder && args[1] is Object) 
    { 
     var sqlWrapper:SQLWrapper = this.sqlStatementFactory.newInstance(args[0], CREATE_USER); 
     var user:Object = args[1]; 
     sqlWrapper.statement.parameters[":id"] = user.Id; 
     sqlWrapper.statement.parameters[":token"] = user.LoginToken; 
     sqlWrapper.statement.parameters[":givenName"] = user.GivenName; 
     sqlWrapper.statement.parameters[":familyName"] = user.FamilyName; 
     sqlWrapper.statement.parameters[":lastLogin"] = new Date(); // this field is always empty 
     sqlWrapper.statement.execute(); 
    } 
} 

주목할만한 것은 내가 SQLite는 관리자를 통해 다음과 같은 SQL을 실행할 때 사실이다 Created이 채워지기는하지만 LastLogin 필드는 여전히 비어 있습니다.

INSERT INTO User (Id, CredentialsToken, GivenName, FamilyName, LastLogin) VALUES (111, 'XYZ', 'Foo', 'Bar', '29-10-2013') 

답변

1

확실하지는 않지만 Date 객체가 매개 변수로 올바르게 전달됩니다. 이 시도 : 당신의 도움에 대한

sqlWrapper.statement.parameters[":lastLogin"] = (new Date()).toISOString(); 
+0

감사합니다. 'toISODateString'은 '함수가 인식되지 않음'오류를 발생시킵니다. 이전의'toDateString' 답변은 sytnax 에러를 일으키지 않습니다. 에러 이벤트를 발생시키기 때문에 작동하지 않습니다. 나는 이제 왜 이것이 무엇인지 알아 내려고 노력 중입니다. –

+0

정확히 어떤 오류가 발생합니까? –

+0

돌아와 줘서 고마워. 사실 아무런 문제가 없다는 것을 알았습니다. 이 문제는 SQLite Administrator에서 'STRFTIME ('% J ', LastLogin)'과 같이 줄리안 -> 문자열 변환을 사용하여 선택해야하므로 날짜 필드를 올바르게 표시하지 못했습니다. 감사. –

관련 문제