回答
你有三(四,如果你在ADO.NET扔)選擇訪問數據庫:
- 股票
SQLDataConnection
Type Provider隨F# 3,可以與SQLServer一起使用。它適用於SQLServer,如果您更喜歡使用LINQ,則可以輕鬆訪問它。 - 更新和多功能的
SqlDataProvider
Type Provider可與各種數據庫一起使用。如果您的數據庫不是SQLServer,那麼這是要使用的類型提供程序。 - 而
SqlClient
Type Provider可以讓你訪問類型安全的SQL。如果你在SQLServer上並熟悉T-SQL,這是一條路。
您可以使用全部三項來獲取相關數據。這是一個被通過SqlCommandProvider
使用SQL查詢的一種方法(方法3):
#r @"..\packages\FSharp.Data.SqlClient.1.8.2\lib\net40\FSharp.Data.SqlClient.dll"
open FSharp.Data
open System
[<Literal>]
let connectionString = @"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=C:\Users\username\Documents\test.mdf;Integrated Security=True;Connect Timeout=10"
let cmd = new SqlCommandProvider<"select * from Information_schema.Columns where table_name = @tableName",connectionString>(connectionString)
let out = cmd.Execute(tableName="yourTableName")
out
|> Seq.map (fun x -> (x.COLUMN_NAME,x.DATA_TYPE))
|> Seq.toList
val it : (Option * Option) list = [(Some "AutoUpdated", Some "bigint"); (Some "UpdatedDate", Some "datetime"); (Some "DataDate", Some "datetime"); (Some "RandomStuff", Some "float"); ...]
您可以使用x.COLUMN_NAME.Value
,如果你想擺脫的選項類型。
獲取數據庫中的所有表格(與服務器上的所有表格不同)。你只需要用你的數據庫名稱替換DB_NAME(或者你可以跳過,如果它是localdb):
let cmd2 = new SqlCommandProvider<"select TABLE_NAME from [DB_NAME].Information_Schema.Tables where table_type = 'BASE TABLE'",connectionString>(connectionString)
let out2 = cmd2.Execute()
out2 |> Seq.toList
我如何使用方法1來做到這一點? –
@JacksonSentzke這是一個很好的問題。之後我實際上考慮過編輯我的帖子,因爲我大膽宣稱可以用任何方式。我懷疑訪問SQL Server中的一些特殊的sprocs並不那麼容易,或者我不知道如何。 :-)所以你要麼執行一個類似的SQL語句,要麼希望某些API調用暴露必要的數據。爲什麼你喜歡這種方法有特別的理由嗎? – s952163
這只是我做這個項目的方式。我只做了一個月左右的F#,而且目前爲止我只使用SQLDataConnection來獲取數據。 –
- 1. F#獲取數據庫表數據
- 2. 從列名稱獲取數據類型
- 3. 序列化f#代數數據類型
- 4. 從數據庫獲取表名,其中包含特定的數據類型列
- 5. 如何獲取PostgreSQL中表的列名和數據類型?
- 6. C#從數據庫檢索數據 - 未知數據類型和未知列名
- 7. 使用日期數據類型列獲取數據庫中的數據。
- 8. 從數據庫獲取int類型c#
- 9. 獲取數據庫類型屬性
- 10. 在Django中獲取數據庫類型
- 11. PHP - 獲取數據庫名稱列表
- 12. 數據庫性能和數據類型
- 13. Sqlite:重命名列和數據類型
- 14. 無法獲取列數據類型
- 15. 獲取一個DataTable列數據類型
- 16. 獲取ResultSet列的數據類型
- 17. 從數據倉庫獲取數據到關係型數據庫
- 18. 數據庫連接和F#
- 19. 類型別名和函數簽名F#
- 20. 獲取長數據類型
- 21. 獲取數據類型/ DataTemplateKey
- 22. 獲取我的數據庫的表名和它們的列名
- 23. 獲取類型錯誤插入數據到數據庫
- 24. 如何從數據庫中獲取數據類型的日期?
- 25. SQL查詢來獲取列名和數據類型,其中表位於兩個服務器的數據庫
- 26. Android獲取數據庫列的總和
- 27. 續集:如何獲取數據集列的數據類型
- 28. Socrata獲取數據集列的數據類型
- 29. 從數據庫中獲取子類別數據到列表
- 30. 根據列名獲取數據
哪個數據庫? –
兩者。說實話,我真的不需要寫第一句話,只是爲了一點上下文。 –
SQL Server?甲骨文? MySQL?.. –