Question by
Black-pearl · Feb 06, 2017 at 04:15 PM ·
c#scripting problemdatabaseaccess
Microsoft Access Database Unity
Hi Everyone,
I need to connect to a access database from Unity3d can this be done?
I can't use sql due to the project limitation else I would just do that,
I have come accross a few posts but there is no clear answer? I came accross this script from a while ago but it had no answers on it,
By modifying this script how could I get it to read tables from a msdb?
Thanks in advance
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);
}
}
Comment