如何连接到.accdb数据库而不是.mdb数据库 [英] How do I connect to an .accdb database instead of an .mdb database

查看:193
本文介绍了如何连接到.accdb数据库而不是.mdb数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题是我无法将我的VB.Net应用程序连接到.accdb数据库。它只会连接到.mdb数据库。我正在使用Visual Studio 2015社区。



我已将项目中的引用添加到Microsoft.Office.Core和Microsoft.Office.Interop.Access.Dao到我的VB .Net项目。



如果不是在我的应用程序中使用.accdb数据库,而是使用相同的名称替换.mdb数据库,我的代码工作正常。 />


为什么我的Vb.Net应用程序不能与.accdb数据库连接。我需要做些什么来让它识别.accdb数据库以便我的代码运行?



之前解决过这个问题的人的任何帮助都将是非常感谢。



我的尝试:



The problem is that I cannot get my VB.Net application to connect to the .accdb database. It will only connect to a .mdb database. I am using Visual Studio 2015 Community.

I have added references in my project to Microsoft.Office.Core and Microsoft.Office.Interop.Access.Dao to my VB.Net project.

If instead of using a .accdb database with my application, I substitute an .mdb database with the same name, my code works fine.

Why won't my Vb.Net application connect with an .accdb database. What do I have to do to get it to recognize the .accdb database so that my code runs?

Any help from someone who has solved this issue before, will be greatly appreciated.

What I have tried:

Dim dbProvider As String
Dim dbSource As String
Dim con As New System.Data.OleDb.OleDbConnection
Dim cmd1 As New System.Data.OleDb.OleDbCommand
Dim CmdTxt As String

dbProvider = "Provider=Microsoft.ACE.OLEDB.12.0;"
dbSource = "Data Source=|DataDirectory|\AssetDatabase.accdb"
con.ConnectionString = dbProvider & dbSource
cmd1.Connection = con
con.Open()
 
Dim NameOfCompany As String = Me.txtCompany.Text

'Creaste tblAssetData for the new company
CmdTxt = "SELECT * INTO AssetDatabase.[tblAssetData-" & NameOfCompany & "] FROM DepreciationCalculator.tblAssetData"

cmd1.CommandText = CmdTxt
cmd1.ExecuteNonQuery()

推荐答案

这是C#,但将其转换为VB.NET应该相当简单。或者您可以使用Visual Studio构建可执行文件。

This is C#, but converting it to VB.NET should be fairly simple. Or you can just use Visual Studio to build the executable.
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
        
            String connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=mydata.accdb";
            
            // Create the raw Database
            ADOX.Catalog cat = new ADOX.Catalog();
            cat.Create(connectionString);
            
            // now create a table with its columns
            ADOX.Table table = new ADOX.Table();
            table.Name = "Contacts";
            table.Columns.Append("FirstName", ADOX.DataTypeEnum.adWChar);
            table.Columns.Append("LastName", ADOX.DataTypeEnum.adWChar);
            table.Columns.Append("BirthDate", ADOX.DataTypeEnum.adDate);
            
            // add the table to the collection
            cat.Tables.Append(table);
            
            // Close the database
            ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
            if (con != null)
                con.Close();
            
            // We can now add some data records to the previously created table
            OleDbConnection conn = new OleDbConnection(connectionString);
            conn.Open();
            OleDbCommand cmd = new OleDbCommand("", conn);
            
            //  Now add some data records to the table            
            string strInsert = "INSERT INTO Contacts (FirstName, LastName, BirthDate) VALUES (?, ?, ?);";
            cmd.CommandText = strInsert;
            cmd.Parameters.AddWithValue("FirstName", "Georgy");
            cmd.Parameters.AddWithValue("LastName", "Porgy");
            cmd.Parameters.AddWithValue("BirthDate", new DateTime(1956, 3, 27));
            cmd.ExecuteNonQuery();
            
            cmd.Parameters["FirstName"].Value = "Fred";
            cmd.Parameters["LastName"].Value = "Nurk";
            cmd.Parameters["BirthDate"].Value = new DateTime(1961, 7, 12);
            cmd.ExecuteNonQuery();
            
            conn.Close();
        }
    }
}


这篇关于如何连接到.accdb数据库而不是.mdb数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆