2012-09-27 7 views
2

저는 C# Windows 응용 프로그램을 가지고 있으며 사용자가 입력 한 데이터를 액세스 데이터베이스에 삽입하려고합니다. 그러나 오류가 발생하지는 않지만 데이터를 입력하지는 않습니다. 어떤 생각?레코드가 데이터베이스에 삽입되지 않습니다.

 string sqlInsert = "insert into assessment (id) values (@id)"; 

     using (OleDbConnection conn = new OleDbConnection(dsn)) 
     { 

      OleDbCommand cmd = new OleDbCommand(sqlInsert, conn); 

      cmd.Parameters.Add("@id", OleDbType.VarChar, 50).Value = iDTextBox.Text.Trim().Length != null ? storedID.Trim() : ""; 

      conn.Open(); 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 
     } 

id의 데이터 유형은 Text입니다.

편집 : 연결 문자열로의 app.config에 저장됩니다

<add name="conn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\CADSCUPP.mdb" providerName="System.Data.OleDb"/> 

에 의해 코드에 액세스 : 내가 코드 뒤에 코드를 수동으로 (하지 레코드를 삽입하는 경우

private string dsn = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 

) 프로그램의 다른 곳에서 레코드를 읽을 수 있으므로 연결이 이루어집니다.

connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename.mdb;" 
+0

OleDbType.VarChar? 신분증 번호가 아닌가요? – Fionnuala

+0

아니오, 숫자가 아닙니다. – peroija

+2

기록이 쓰여지고 있지 않음을 어떻게 압니까? ASP.NET에서 데이터베이스를 쿼리하거나 Access의 테이블을보고 확인하고 있습니까? ASP.NET과 VS가 개발 컴퓨터의 다른 곳에 데이터베이스 복사본을 만들지 않았는지 확인할 수 있습니다. ASP.NET에서 이런 일이 발생하는지 모릅니다. 그러나 Win7에서 Access dbs를 사용하는 WinForms 앱에서이 문제가 발생하는 것을 보았습니다. –

답변

2

윈도우 7이 컴파일 및 윈폼 응용 프로그램을 실행할 때, 다른 장소에서 Access 데이터베이스의 복사본을 만들 알려져있다. ASP.NET 응용 프로그램에서이 작업을 수행하는지는 모르겠지만 가능성은 있습니다. 앱이 액세스하는 데이터베이스가 사용자가 생각하는 위치에 있는지 확인하는 것이 좋습니다.

+0

은 데이터베이스를 다시 만들고 거기에 저장하는 디버그 아래 몇 개의 폴더를 나타냅니다. – peroija

+0

예 실행 파일이있는 bin 폴더에 복사하고 모든 빌드에서 솔루션 폴더에있는 복사본으로 바꿉니다. 따라서 exe 파일을 빌드하고 실행하지 않으면 데이터를 볼 수 있습니다. – Yawar

0

당신은 당신의 문자열 연결이 올바른

샘플이 있는지 확인할 수 있습니다. 매개 변수 이름은 액세스시 중요하지 않습니다. 주문 만 계산합니다. 나는 꽤 오랫동안 액세스를 사용하지 못했습니다.하지만 그것은 내가 기억하는 한 가지입니다. 그것은 나를 미치게 만드는 데 사용되었습니다. Access에서는 매개 변수 이름이 중요하지 않습니다.

string sqlInsert = "insert into assessment (id) values (?)"; 

     using (OleDbConnection conn = new OleDbConnection(dsn)) 
     { 

      OleDbCommand cmd = new OleDbCommand(sqlInsert, conn); 

      cmd.Parameters.Add("?", OleDbType.VarChar, 50).Value = iDTextBox.Text.Trim().Length == 0 ? storedID.Trim() : ""; 

      conn.Open(); 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 
     } 
1

사용 물음표 대신 @의 SQL 텍스트에서 :

+0

동일한 결과, 데이터베이스에 아무 것도없고 오류가 없습니다. ( – peroija

+0

@peroija - 내 업데이트보기 - 테이블 평가는 어떻게됩니까? –

0

커맨드 유형을 언급하는 데 빠져 있다고 생각합니다. 다음과 같은 다른 줄을 추가하십시오.

OleDbCommand cmd = new OleDbCommand(sqlInsert, conn); 
cmd.CommandType = CommandType.Text; 
관련 문제