- Home /
how to read a Microsoft access database in unity 3d
I want to read a .mdb(Access 2003)in unity3d for reading in android Platform,I dont want use SQLite then please dont suggest using that , just give a tested example which work in android completely it its not important how much your file is simple. i try to write my database copy from streamingAssets to perssistentdata path then over there read my database.(i use this style in .txt file and it is working well)then i think i have problem in opening database in android platform.
using UnityEngine; using System.Collections; using System; using System.IO; using System.Data; using System.Data.Odbc;
public class ACCESSREADER : MonoBehaviour {
 public string FinalDatabasePath="";
 public string MydatabaseName="Database1.mdb";
 public string myFinalResult="null";
 void Start () 
 {
       StartCoroutine(CopyFileAsyncOnAndroid());
 }
 internal void readMDB( string filetoread)
 {
     string con = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+ filetoread + "/Database1.mdb";
     Debug.Log(con);
     string yourQuery = "SELECT * FROM PlayersQuery"; 
     // our odbc connector 
     OdbcConnection oCon = new OdbcConnection(con); 
     // our command object 
     OdbcCommand oCmd = new OdbcCommand(yourQuery, oCon);
     // table to hold the data 
     DataTable dtYourData = new DataTable("YourData");
     try
     {
         oCon.Open();
         OdbcDataReader rData = oCmd.ExecuteReader();
         dtYourData.Load(rData);
         rData.Close();
         oCon.Close();
     }
     catch (Exception ex)
     {
         Debug.Log(ex.ToString());
     }
     finally
     {
         if (oCon.State != ConnectionState.Closed)
             oCon.Close();
         oCon.Dispose();
     }
     if(dtYourData.Rows.Count > 0) 
     { 
         for (int i = 0; i < dtYourData.Rows.Count; i++) 
         { 
             // for giggles, lets see the column name then the data for that column! 
             Debug.Log(dtYourData.Columns[0].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[0].ColumnName].ToString() + 
                 "  |  " + dtYourData.Columns[1].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[1].ColumnName].ToString() + 
                 "  |  " + dtYourData.Columns[2].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[2].ColumnName].ToString() +
                 "  |  " + dtYourData.Columns[3].ColumnName + " : " + dtYourData.Rows[i][dtYourData.Columns[3].ColumnName].ToString()
                 );
             myFinalResult = dtYourData.Rows[2][dtYourData.Columns[1].ColumnName].ToString();
         } 
     } 
 }
 
 IEnumerator CopyFileAsyncOnAndroid()
 {
  string fromPath = Application.streamingAssetsPath +"/";
  //In Android = "jar:file://" + Application.dataPath + "!/assets/" 
  string toPath =      Application.persistentDataPath +"/";
  string[] filesNamesToCopy = new string[] { "Database1.mdb"};
  foreach (string fileName in filesNamesToCopy)
  {
    WWW www1 = new WWW( fromPath +fileName);
    yield return www1;
    File.WriteAllBytes(toPath+ fileName, www1.bytes);
   }
}
void OnGUI() { if (GUI.Button(new Rect(10,20,50,50),"calc"))
     {
         readMDB(Application.persistentDataPath);
         
     }
     GUI.Label(new Rect(100,150,100,100),myFinalResult);
 }
}
Your answer
 
 
             Follow this Question
Related Questions
Read boolean from parent's script 2 Answers
Read/Write attachments from MS AccessDB 0 Answers
SqliteException: Unable to open the database file - Ready-made DB Provided To Access 0 Answers
save and load firebase 0 Answers
How to access Android music library? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                