복붙노트

[SQL] 마이크로 소프트 액세스 2010 .accdb에 대한 SQL 연결 문자열

SQL

마이크로 소프트 액세스 2010 .accdb에 대한 SQL 연결 문자열

나는 윈폼과 C #에서 액세스 2010 데이터베이스 (.accdb)를 사용하여 간단한 로그인 양식을하고있는 중이 야.

나는 다음과 같은 코드가 있으며 연결 문자열이 잘못된 것 같습니다. 나는 검색을 시도하고 .Jet 액세스 07에 대한 것으로 나타났습니다? 하지만이 나던 너무 작동하는 것. 난 (코드는 MSDN에서 참조) 데이터베이스에서 아마추어입니다. 나는 문제는 내가 너무이 예를 들어 사용해야하는 이해하는 데.

액세스 테이블 이름 : 하하

ID (PK)  |   password
-----------------------
   1     |   testing
        System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb");
        System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();

        comm.CommandText = "SELECT HAHA(*) FROM password";
        comm.CommandType = CommandType.Text;
        comm.Connection = conn;

        conn.Open();

        Object returnValue = comm.ExecuteScalar();
        conn.Close();

        MessageBox.Show((string)returnValue);

편집 : 테이블의 이름이 암호입니다, 내가 값을 취득하려는 필드 ID입니다.

암호와 SELECT ID : SQL 문 나는대로 쓴

그리고 네, 기본 키와 같은 테이블에 하나의 필드에서 하나의 레코드 만.

어쨌든 문제는 첫 번째 줄에 실행시 프로그램 중지 -> 키워드는 지원되지 않습니다 '제공'을.

그래서 내가 잘못 연결 문자열을 가지고 생각 ..

해결법

  1. ==============================

    1.대한 액세스 데이터베이스를 수 (.mdb, .accdb 등)의 경우, 다음과 같이되어 OleDbConnection하지도록 SqlConnection (SQL Server)를 사용하려면 :

    대한 액세스 데이터베이스를 수 (.mdb, .accdb 등)의 경우, 다음과 같이되어 OleDbConnection하지도록 SqlConnection (SQL Server)를 사용하려면 :

    conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb")
    
  2. ==============================

    2.편집 : 액세스는 OleDbConnection에 대한 지적 밖으로는,도록 SqlConnection하지 사용해야로 ...

    편집 : 액세스는 OleDbConnection에 대한 지적 밖으로는,도록 SqlConnection하지 사용해야로 ...

    당신은 훨씬 더 컴팩트 한 방법을 사용하고 또한 반드시 연결이 사용하는 문을 사용하여 예외가 발생하는 경우에도 가능한 경우 폐쇄 및 배치 할 수 있습니다 :

    쿼리 텍스트는 다른 제안 아마 잘못로도했다 ...

    using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BC207\test.accdb"))
    using (var comm = conn.CreateCommand())
    {
        comm.CommandText = "SELECT password FROM HAHA";
        comm.CommandType = CommandType.Text;
    
        conn.Open();
    
        var returnValue = comm.ExecuteScalar();
    
        MessageBox.Show(returnValue.ToString());
    }
    

    편집 : 당신은 하하가 하나 개의 행을 포함하는 테이블을 확실합니까? 당신이 1 열을 얻을하려는 경우 ExecuteScalar는은, 단 하나의 값을 반환하지만, 많은 기록에서 당신은 DataReader를 또는 데이터 집합을 사용할 수 있기 때문에 ...

  3. ==============================

    3.

    comm.CommandText = "SELECT HAHA(*) FROM password";
    

    오기 '잘못된.

    "하하로부터 암호 선택"

  4. ==============================

    4.귀하의 SQL 문은해야한다

    귀하의 SQL 문은해야한다

    SELECT * from HAHA
    

    또는

     SELECT [Password] From HAHA
    

    편집하다:

    당신은 ConnectionString을 변경해야합니다.

  5. from https://stackoverflow.com/questions/7764707/sql-connection-string-for-microsoft-access-2010-accdb by cc-by-sa and MIT license