2012-03-10 8 views
1

이 코드는 dbf 파일의 데이터를 저장하지 않습니다. 여기서 뭐가 잘못 됐니? 권장 변경 사항이있는 코드는 다음과 같습니다. 고맙습니다. 루트 디렉토리에 쓸 수 .... 나쁜 ... 그것은 단지 권한의 문제가 될 수하지 :.dbf 파일에 삽입 할 때 문제가 발생했습니다.

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP;Extended Properties=dBase IV"; 
     using (OleDbConnection connection = new OleDbConnection(connectionString)) 
     using (OleDbCommand command = connection.CreateCommand()) 
     { 
      connection.Open(); 
      command.CommandText = @"CREATE TABLE TEST (Id Text, Changed Text, Tacos Text)"; 
      command.ExecuteNonQuery(); 
     } 
     using (OleDbConnection connection2 = new OleDbConnection(connectionString)) 
     using (OleDbCommand command2 = connection2.CreateCommand()) 
     { 
      connection2.Open(); 
      command2.CommandText = @"Insert into TEST (Id, Changed, Tacos) VALUES ('One','Two','Three')"; 

      try 
      { 
       command2.ExecuteNonQuery(); 
      } 
      catch (Exception ee) 
      { 
       MessageBox.Show(ee.ToString()); 
      } 
     } 
+0

Visual Studio를 사용하여이 빌드를 만들었습니까? 디버거에서 실행하고 있습니까? .dbf 파일이 VS 솔루션 파일에 있습니까? "Copy to Output Directory"속성은 무엇입니까? .dbf 경로는 무엇입니까? 열어보고있는 파일의 경로가 어떤 데이터도 저장되지 않았다고 생각하십니까? 당신의'새로운 OleDbConnection (...)에 중단 점을 넣고 경로가 정말로 그것이 무엇이라고 생각하는지 확인하십시오. –

답변

0

긍정적 아니지만, 연결을보고, 당신은 C의 루트에 연결 . '

나는, 일부 하위 폴더에 대한 연결을 만드는 제안 심지어는 단지

C의 경우 : \ MyDBFTesting은 "테이블 만들기"결과가 사실 일 경우 그 후

는보고 당신이 볼 수있는 그 \ "test.dbf".

마지막으로,

try 
{ 
    command2.ExecuteNonQuery() 
} 
catch(Exception e) 
{ 
    string x = e.Message; 
} 

가 캐치에서 브레이크 포인트를 넣고로 .../메시지는 "E"예외가있을 수 있습니다 어떤 다른 요소 참조 단계 시도/캐치에 ExecuteNonQuery는()를 넣어 더 많은 답변을 제공 할 수있는 객체입니다.

(고정/표준 타입보다는 더 자유로운 형식의 텍스트를 나타냅니다) ".dbt"의 내용을보고, 나는 ... 명시 적으로 고정 된 크기 용량의 캐릭터를 식별하기 위해 만들려면

create table Test (ID C(10), Changed C(10), Tacos C(10)) 
같은 것을 바꿀 것

C = Character이고 10은 열에 허용되는 최대 크기입니다. I = int, D = 날짜 만, T = 날짜/시간, L = 논리적 등의 다른 데이터 유형은 엄격한 구조를 제공하는 "알려진"유형입니다. TEXT는 자유 형식이며 내용은 .dbt 파일로 이동하지만 해당 레코드가 있어야하지만 표시되지 않는 것이 좋습니다.

그런 다음 삽입 명령이 여전히 동일하게 작동합니다.

+0

테이블 (파일)이 생성됩니다. 또한 열 머리글은 있지만 행은 없습니다. try catch와 함께 예외가 생성되지 않습니다. –

+0

@NewsReader, 그렇다면 try catch에서 executenonquery를 실행하고보고 된 오류가 무엇인지보고 싶습니다. 경로에 연결되어 있으므로 .DBF 확장명을 가정하므로 삽입 명령 .DBF 참조를 암시 적으로 제외하면 간단 할 수 있습니다. - 하나의 최종 생각, "NAME"은 아마도 예약 된 단어 일 것입니다 ... 뭔가 다른 이름으로 테이블을 변경 ... – DRapp

+0

답장을 보내 주셔서 감사합니다. 'Name'열을 'Tacos'로 변경했으며 새 열 머리글 이름은 Tacos로 표시됩니다. 그러나 여전히 행은 없습니다. 어쩌면 삽입 구문이 잘못 되었습니까? 코드를 업데이트했습니다. –

관련 문제