2010-06-18 6 views
-5

나는 응용 프로그램 양식을 가지고 있고 응용 프로그램 (텍스트 상자)에서 데이터를 저장할 수 없습니다 (ms 액세스). 저장된 데이터가 응용 프로그램에서 볼 수 있지만 데이터베이스가 열리지 않으면 ... 데이터베이스를 열고 양식을 다시 시작하면 삽입 된 데이터가 표시되지 않습니다.데이터베이스 도움말에 데이터를 저장할 수 없습니다!

 
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;" 
     + " Data Source=save.mdb"; 


      OleDbConnection empConnection = new OleDbConnection(conString); 


      string insertStatement = "INSERT INTO zivila " 
           + "([naziv]) " 
           + "VALUES (@naziv)"; 

      OleDbCommand insertCommand = new OleDbCommand(insertStatement, empConnection); 

      insertCommand.Parameters.Add("@naziv", OleDbType.Char).Value = textBox1.Text; 

      try 
      { 
       empConnection.Open(); 
       int count = insertCommand.ExecuteNonQuery(); 
       empConnection.Close(); 
      } 
      catch (OleDbException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 

       textBox1.Clear(); 
+0

Woah, strange. 원저자가 특정 기간 내에 수정 사항을 수정하면 수정 사항이 표시되지 않습니까? – aehiilrs

+0

데이터베이스 파일 이름에 경로가 없습니다. 이는 데이터베이스가 현재 디렉토리에 있음을 의미합니다. 그러나 프로그램을 실행할 때 현재 디렉토리는 무엇입니까? VS 내부의 디버그 모드에서 이것은 BIN \ DEBUG입니다. 업데이트 된 데이터베이스가 있습니다. – Steve

답변

3

난 당신이 ]

+0

일부 coude를 잘라 내기 때문에 ... 컴파일러에서 오류를 표시하지 않습니다 – Simon

+0

@Simon 컴파일러에서 오류를 표시하지 않습니다. SQL에 문제가 있습니다. 당신은 그것이 실행에 대한 예외를 던졌을 거라고 생각할지라도 ... –

+0

나는 내가 사용하는 데이터가 유용하다고 말했다. 그래서 만약 내가 데이터를 저장하기 전에 나는 괄호가 없을 것이다 오류가 발생합니다. 나는 그 질문을 편집했다. (덧붙여서) 그래서 브래킷을 혼자 남겨 두어라. 코드를 편집하는 것은 실수였다. '전체 코드를 넣지 않으려면 필요하지 않다. 왜 그런지 모르겠다. 데이터 (데이터) 내 데이터베이스에 저장합니다. 전체 경로를 데이터 원본으로 사용하는 경우 데이터가 저장되어 있지만 사용할 수 있도록 만들기 위해 응용 프로그램을 다시 시작해야하며 매번 내가 이동할 때마다 데이터 원본의 경로를 변경해야합니다. 응용 프로그램 ... – Simon

0

은 OleDb라는 매개 변수를 지원하지 않는 것 같습니다 대괄호를 놓치고 생각합니다. here에서

는 (?)

는 OLE DB.NET Framework 데이터 공급자는 물음표로 표시됩니다 위치 매개 변수 대신 명명 된 매개 변수를 사용합니다.

이 당신을 얻을 수 있습니다 당신이 원하는 무엇을 : 당신의 데이터베이스 솔루션의 일부인 경우,이 bin 폴더와 복사됩니다 :

string insertStatement = "INSERT INTO zivila ([naziv]) VALUES (?)"; 
// snip 
insertCommand.Parameters.Add("@p1", OleDbType.Char, 255).Value = textBox1.Text; 
0

는 당신이 바로 데이터베이스에서 찾고 있는지 확인 빌드 폴더의 데이터베이스가 대신 업데이트됩니다.

@tomfanning에 동의하는 이유는 Access가 명명 된 매개 변수를 지원하지 않고 대신 물음표를 사용해야한다는 것입니다.

관련 문제