2
두 테이블로 구성된 Access 데이터베이스를 만들려고합니다. 다음 메소드 내에서 System.Runtime.InteropServices.COMException이 88 행에 있습니다. 카탈로그 개체에 테이블을 추가하려고하면 예외가 발생합니다. 누군가 잘못 설명하고이를 해결하는 방법을 알려주세요.ADOX로 Access db 만들기
public bool CreateNewAccessDatabase(string fileName)
{
bool result = false;
ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table provTable = new ADOX.Table();
ADOX.Key provKey = new ADOX.Key();
ADOX.Table locTable = new ADOX.Table();
ADOX.Key locKey = new ADOX.Key();
ADOX.Column provCol = new Column();
ADOX.Column locCol = new Column();
//Create the Province table and it's fields.
provTable.Name = "Provinces";
provCol.Name = "id";
provCol.Type = ADOX.DataTypeEnum.adInteger;
provTable.Columns.Append(provCol);
provTable.Columns.Append("name", ADOX.DataTypeEnum.adVarWChar, 4);
provKey.Name = "Primary Key";
provKey.Columns.Append("id");
provKey.Type = KeyTypeEnum.adKeyPrimary;
//Create the Locations table and it's fields
locTable.Name = "Locations";
locCol.Name = "id";
locCol.Type = ADOX.DataTypeEnum.adInteger;
locTable.Columns.Append(locCol);
locTable.Columns.Append("name", ADOX.DataTypeEnum.adVarWChar, 50);
locTable.Columns.Append("price", ADOX.DataTypeEnum.adVarWChar, 8);
locKey.Name = "Primary Key";
locKey.Columns.Append("id");
locKey.Type = KeyTypeEnum.adKeyPrimary;
try
{
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5");
// Must create database file before applying autonumber to column
provCol.ParentCatalog = cat;
provCol.Properties["AutoIncrement"].Value = true;
locCol.ParentCatalog = cat;
locCol.Properties["AutoIncrement"].Value = true;
cat.Tables.Append(provTable); // <<< Exception triggered here
cat.Tables.Append(locTable);
//Now Close the database
ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
if (con != null)
con.Close();
result = true;
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
result = false;
}
cat = null;
return result;
}
확인. 요청한대로 데이터 유형을 변경했지만 동일한 예외가 발생합니다. – Alan
@Alan 첫 번째 것을 놓쳤습니다.'provTable.Columns.Append ("name", ADOX.DataTypeEnum.adVarChar, 4); ' –
예! 그거였다. 당신이 옳았. 가득 차있는 브라우니 점. – Alan