I am trying to create a MS Access database and table using ADOX but have run into a problem. See code below:
using System;
using ADOX;
publicclassCCreateDB
{
classClass1
{
staticvoid Main()
{
string db_Newfile_path = "logfiles\\TOmsg.mdb";
ADODB.Connection conn = new ADODB.Connection();
ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table tbl = new ADOX.Table();
conn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + db_Newfile_path);
cat.ActiveConnection = conn;
tbl.Name = "OBMessages";
tbl.Columns.Append("ID", DataTypeEnum.adInteger, 0);
tbl.Columns[0].ParentCatalog = cat;
tbl.Columns[0].Properties["AutoIncrement"].Value = true;
tbl.Keys.Append("ID", KeyTypeEnum.adKeyPrimary, "ID", "OBMessages", "ID");
tbl.Columns.Append("ToPktNum", DataTypeEnum.adSmallInt, 0);
tbl.Columns.Append("ToAddress", DataTypeEnum.adVarWChar, 80);
tbl.Columns.Append("ToSubject", DataTypeEnum.adVarWChar, 80);
tbl.Columns.Append("ToMsgBody", DataTypeEnum.adVarWChar, 128);
tbl.Columns.Append("ToDateTime", DataTypeEnum.adDBTimeStamp, 0);
tbl.Columns.Append("ToStatus", DataTypeEnum.adSmallInt, 0);
tbl.Columns.Append("ToPriority", DataTypeEnum.adSmallInt, 0);
cat.Tables.Append(tbl); // << ERROR at this point
conn.Close();
}
}
}
----------------------------------------------------
When I compile I get an error as described below.
---------------------------------------------------
System.Runtime.InteropServices.COMException occurred
Message=Type is invalid.
Source=Microsoft JET Database Engine
ErrorCode=-2147217859
StackTrace:
at ADOX.Tables.Append(Object Item)
at CCreateDB.Class1.Main() in C:\Documents and Settings\mtthompson\my documents\visual studio 2010\Projects\Dbasetest\Dbasetest\Program.cs:line 34
InnerException:
-----------------------------------------------------
I am using VS 2010 and the C# language on Windows XP SP3. I have set references to ADOX and ADODB. Thank you for your help with this problem.