F # и ADO.NET для подключения к Access 2007 - PullRequest
1 голос
/ 28 апреля 2009

Я очень новичок в F #, и я пытался найти самый простой способ подключения к Access 2007 с помощью System.Data.OleDb. Я сделал это с 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, чтобы открыть соединение? Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 28 апреля 2009

Это так НЕ 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();
;;
0 голосов
/ 28 апреля 2009

Я, наконец, скомпилировал некоторый код для чтения БД Access 2007 в F # из winform:

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)

Спасибо всем, кто помог!

0 голосов
/ 28 апреля 2009

Если вы показываете соответствующий C #, это может помочь.

Если вы пытаетесь присвоить свойство в последней строке, тогда вы хотите "<-": </p>

ADOCon.ConnectionString <- "yadda"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...