2016-10-12 5 views
1

私はF#を使用して作成したobj [] []を持っており、そのコレクションの値をSQLテーブルに書きたいと思っています。問題は、私が指定したテーブルにアップロードできる必要があるということです。つまり、テーブルの名前は変数として格納され、コレクションの長さも変更されます。F#SQL obj [] []をSQLテーブルに書き込む

let tableName = "table2" 

私のオブジェクト配列がそのように呼ばれているのdataTable:

dataTable[0][0] = "Jackson" 
     [0][1] = "Sentzke" 
     [0][2] = "1991-04-19T00:00:00" 
     [0][3] = "Jackson Sentzke" 
     [1][0] = "Peter" 
     [1][1] = "Sentzke" 
     [1][2] = "1962-02-11T00:00:00" 
     [1][3] = "Peter Sentzke" 

これは私が実際のdataTableから値を取得する方法はありませんが、これは単なる一例です。

誰かがdataTableのデータを「table2」に挿入する方法を知っていますか? F#は独立してSQLおよびその逆の存在

let cn = new SqlConnection(connectionstring) 
cn.Open() 
let sQL = "INSERT INTO [" + tableName + "] VALUES(@param1)" 
let db = new SqlCommand(sQL, cn) 
db.Parameters.AddWithValue("@param1", tableData) 
db.ExecuteNonQuery() 
+4

:私が持っている瞬間

。配列から値を取得することは、SQLとは関係ありません。 SQLテーブルに値を挿入することは、F#とは何の関係もありません。あなたの正確な問題は何ですか? – franssu

+0

SQLルームに参加してください。 –

+3

*この*質問に対する回答は元のものと同じです。それがSQLの仕組みではありません。まず、正しいINSERT文を書き、*してから、この文をコードから実行しようとします。あなたが書いた*まだ*の文は、単一の列だけを持つテーブルに単一の値しか書いていません。 –

答えて

1
let cn = new SqlConnection(connectionstring) 
    cn.Open() 

    for i=0 to tableData.Length-1 do 
     let mutable columnsTemp = "" 
     let mutable valuesTemp = "" 
     for j = 0 to tableData.Item(i).Length-2 do 
      columnsTemp <- columnsTemp + columnNames.GetValue(j).ToString() + "," 
      valuesTemp <- valuesTemp + "'" + tableData.Item(i).GetValue(j).ToString() + "'," 


     let columns = columnsTemp.Remove(columnsTemp.Length-1,1) 
     let values = valuesTemp.Remove(valuesTemp.Length-1,1) 
     let sQL = "INSERT INTO [" + tableName + "] (" + columns + ") VALUES (" + values + ")" 
     let db = new SqlCommand(sQL, cn) 
     db.ExecuteNonQuery() 
関連する問題