2012-07-28 8 views
0

나는 내 데이터베이스 테이블에 삽입 한 텍스트 데이터에 대해이 C# 코드를 쓸 :SQLite는은 C#에서 그런 표는

SQLiteConnection con = new SQLiteConnection("Data Source=tDB1.sqlite;Version=3;"); 
string q1 = "INSERT INTO tMembers(mName) VALUES(?)"; 

SQLiteCommand cmd1 = new SQLiteCommand(q1, con); 
cmd1.Parameters.AddWithValue("@mName", txtName.Text); 

con.Open(); 
cmd1.ExecuteNonQuery(); 
con.Close(); 

내 프로그램 폴더로 내 tDB1.sqlite를 복사 sqlite가에 tMembers 테이블을 작성합니다.

내가 내 프로그램, 프로그램 디버거 쇼 ""cmd1.ExecuteNonQuery(); "실행 나에게"라인 표시 : SQLite는 오류 그러한 테이블 하나가 나를 도울 수

를? 감사합니다.

+0

구문 오류 일 수 있습니까? INSERT 문에서'tMembers'와'(mName)'사이에 공백이 필요합니까? – Dai

+0

db가 프로그램 폴더뿐만 아니라 실행 파일과 동일한 폴더에 있는지 확인하십시오. –

답변

0

현재 디렉토리를 기반으로 한 파일을보기에는 조금 약하다. 확신하는 경우 데이터베이스는 비주얼 스튜디오 $ projectdir$\bin\debug에서 디버깅 다음 코드에서와 같이 경로 적용 할 수 있습니다 때 즉 (실행 파일과 동일한 디렉토리에 정확하게 배치됩니다 :

SQLiteConnection con = new SQLiteConnection(string.Format("Data Source={0};Version=3;" 
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"tdb1.sqlite")) 
    ); 
+0

"현재 디렉터리에만 기반한 파일 찾기가 약간 힘듭니다." 데이터베이스를 처리하는 가장 좋은 방법은 무엇입니까? 감사합니다 – ramin

+0

@ramin 내가 좋은 대안입니다, 나는 exe 거짓말 + db 파일 이름을 모든 경로를 사용합니다. –

0

변경을 명령 문자열

string q1 = "INSERT INTO tMembers(mName) VALUES(?)"; 

string q1 = "INSERT INTO tMembers(@mName) VALUES(?)"; 

에이 컬럼의 이름에 해당해야 할 필요는 없지만, 실행할 때 그것은 인수의 이름과 동일해야합니다 전체 명령. 이것에 대한 자세한 정보는 Google에서 "PL/SQL"을 검색 할 수 있습니다.

게다가이 명령을 "VALUES (?)"와 함께 실행 했습니까? 그게 작동 할 수 있는지 모르겠다면 NOT NULL 제약 조건이 없다면 INSERT INTO tMembers(@mName) DEFAULT VALUES을 대신 실행할 수 있습니다.