Как создать базу данных 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;
        } 
    }
}

0 ответов

Другие вопросы по тегам