繁体   English   中英

F#和ADO.NET连接到Access 2007

[英]F# and ADO.NET to Connect To Access 2007

我是F#的新手,我试图找到使用System.Data.OleDb连接到Access 2007的最简单方法。 我已经使用C#完成了此操作,但是我不知道如何将语法转换为F#。 以下是我到目前为止所知道的:

#light
open System.Windows.Forms
open System.Data.OleDb
open System.Data

let ADOCon = new OleDbConnection()
let DTab = new DataTable()

ADOCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\...mdb"

我知道连接字符串的语法错误,并且我不知道如何添加OleDataAdapter和OleCommandBuilder。 有谁知道从#light到打开连接的简单示例? 先感谢您!

但这不是F#的处理方式,但这可行...

open System.Data  
open System.Data.OleDb

let cmd = new OleDbCommand( "SELECT * FROM TABLE1" );
let conn = new OleDbConnection( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Database1.mdb;Persist Security Info=False;" )

conn.Open();
cmd.Connection <- conn;
  using (cmd.ExecuteReader()) 
    (fun reader ->
      if (reader.HasRows) then
        (
          printfn "Queried: %s" cmd.CommandText
          while (reader.Read()) do
            (
              let id = reader.GetInt32(0)
              let tmp = reader.GetString(1)

              printfn "%d %s" id tmp
            )
          done
        )
      else (printfn "Empty result")
      )

conn.Close();
;;

如果显示相应的C#,则可能会有所帮助。

假设您尝试在最后一行分配属性,则需要“ <-”:

ADOCon.ConnectionString <- "yadda"

我最终编译了一些代码,以从Winform中读取F#中的Access 2007 Db:

open System.Data.OleDb
open System.Data

//Create winform//
let frmMain = new Form()

//Connect to Access Db//
let ADOCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;
  Data Source=C:\Users\...\Desktop\FSharpDb.mdb")

let DAdapter = new OleDbDataAdapter("Select * from Names_Table", ADOCon)

let DTable = new DataTable()
DAdapter.Fill(DTable)|>ignore
let view = new DataGridView()
do view.DataSource <- DTable

let ConnectionString = 
    ADOCon.Open()

frmMain.Controls.Add(view)

//Run main form on start up
Application.Run(frmMain)

感谢您的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM