Как создать базу данных Access 2010 и настроить таблицы и столбцы?
Я пытаюсь создать базу данных Access 2010 уже несколько дней, и я получаю всевозможные ошибки при каждой попытке. У меня уже установлены драйверы, и я сделал ссылки на ADOX и ADODB. Самая последняя ошибка, с которой я столкнулся, - это 0x80040E21, которая называется "Произошла ошибка OLE DB. Код ошибки: 0x80040E21. Доступна запись OLE DB. Источник: " Собственный клиент Microsoft" Hresult: 0x80040E21 Описание: " Многоэтапная операция OLE DB " сгенерированные ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Работа не выполнена.". Не удалось создать средство доступа OLE DB. Убедитесь, что метаданные столбца верны."
Я не совсем уверен относительно причины этой ошибки. У меня есть вся моя программа ниже. Я просто хочу просто создать базу данных с 1 таблицей, заполнить ее несколькими столбцами и установить типы данных столбцов и размер записей. У кого-нибудь есть идеи о том, что мне не хватает?
Я также хотел бы помочь, чтобы выяснить, как установить автоматическое увеличение столбца ID, а также.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ADOX;
using ADODB;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
CreateNewAccessDatabase(@"C:\Users\owner\Desktop\Reports.accdb");
}
public bool CreateNewAccessDatabase(string fileName)
{
bool result = false;
ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();
table.Name = "ServerReports";
ADOX.Column ID = new ADOX.Column();
ID.Type = ADOX.DataTypeEnum.adBigInt;
ID.DefinedSize = 19;
ID.Name = "ID";
ADOX.Column INDEX = new ADOX.Column();
INDEX.Type = ADOX.DataTypeEnum.adInteger;
INDEX.DefinedSize = 10;
INDEX.Name = "Index";
ADOX.Column NAME = new ADOX.Column();
NAME.Type = ADOX.DataTypeEnum.adVarChar;
NAME.DefinedSize = 256;
NAME.Name = "Name";
ADOX.Column ADDRESS = new ADOX.Column();
ADDRESS.Type = ADOX.DataTypeEnum.adVarChar;
ADDRESS.DefinedSize = 256;
ADDRESS.Name = "Address";
ADOX.Column STATUS = new ADOX.Column();
STATUS.Type = ADOX.DataTypeEnum.adBoolean;
STATUS.DefinedSize = 1;
STATUS.Name = "Status";
ADOX.Column PING = new ADOX.Column();
PING.Type = ADOX.DataTypeEnum.adDouble;
PING.DefinedSize = 9;
PING.Name = "Ping";
ADOX.Column DATE = new ADOX.Column();
DATE.Type = ADOX.DataTypeEnum.adDate;
DATE.Name = "Date";
table.Columns.Append(ID);
table.Columns.Append(INDEX);
table.Columns.Append(NAME);
table.Columns.Append(ADDRESS);
table.Columns.Append(STATUS);
table.Columns.Append(PING);
table.Columns.Append(DATE);
table.Keys.Append("ID", ADOX.KeyTypeEnum.adKeyPrimary, "ID", "ServerReports", "ID");
try
{
cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Persist Security Info=False;");
cat.Tables.Append(table);
ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
if (con != null)
con.Close();
textBox1.Text = "Database Created Successfully";
result = true;
}
catch (Exception ex)
{
textBox1.Text = Convert.ToString(ex);
result = false;
}
cat = null;
return result;
}
}
}