使用来自c#

时间:2017-04-06 18:19:38

标签: c# vba ms-access

我想编写一个c#应用程序,它将从表中读取大量的Access查询。该表将包含查询的所有SQL语句。 查询可能包含Access函数和方法,如InStr,DateAdd等。 在T-SQL中重写所有这些语句实际上是不可行的,因为该表将不断添加新的查询。

简而言之,是否可以从c#运行Access SELECT查询(包含VBA函数),并将结果读入DataTable?

1 个答案:

答案 0 :(得分:1)

这似乎是一个奇怪的要求,但我确信做这种事情在技术上是可行的。

string strProvider = "@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Database3.accdb";
string strSql = "Select * from score";
OleDbConnection con = new OleDbConnection(strProvider);
OleDbCommand cmd = new OleDbCommand(strSql, con);
con.Open();
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable scores = new DataTable();
da.Fill(scores);
dataGridView1.DataSource = scores;

并且,处理异常。 。

try
        {

        Dataset myDataSet=new Dataset();

        string connection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Database3.accdb";
        OleDbCommand cmd = new OleDbCommand("Select * from score", conn);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmd );

        connection .Open();
        myDataAdapter.Fill(myDataSet,"TableName");

        }
        catch (Exception ex)
        {
              Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
              return;
        }
        finally
        {
              connection .Close();
        }