問題タブ [hdbc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - haskellでHDBCを使用してエントリが存在するかどうかを効果的に確認する方法は?
私の質問で述べたように、データを挿入したいテーブルに一意の制約があります。データが既に存在するかどうかを確認し、存在しない場合は挿入する必要があります。
それは私ができないように見えることです。これが私のコードです:
エラーはありません。コンパイルされますが、まだ存在しない電子メールを送信すると、パターンの一致が失敗します。
database - Haskell の HDBC を使用すると、単一の SQLite 接続を複数のスレッドで使用できますか?
複数のスレッドで Haskell の HDBC を使用して SQLite データベースからクエリ (読み取り) を行う場合、単一の接続を使用できますか?それとも各スレッドに独自の接続を使用する必要がありますか? ありがとう。
haskell - 1 つのステートメントでの HDBC と複数の結果セット: 最初の結果セットのみが返される
HDBCが単一のステートメントで複数の結果セットをサポートする方法を探しています
これは返すだけです[[SqlInt32 1,SqlInt32 2,SqlInt32 3],[SqlInt32 2,SqlInt32 3,SqlInt32 4]]
ここで、2 番目の結果セットの結果が破棄されていることがわかります
これをサポートする QuickQuery 以外の関数があるかどうか疑問に思っていますか?
理想的には、戻り値の型は[[[SqlValue]]]
代わりに[[SqlValue]]
、最初の最も外側のリストがクエリによって返される各結果セットに対応します。
HDBCがその方法を提供しない場合、複数の結果セットを返すステートメントを処理する他のパッケージはどれでしょうか?
編集: 実際には、API の変更を伴わない解決策は、次のように機能させることです。
私がチェックしたところ、sqlserverの場合、rows2の空のリストが返されました
postgresql - HDBC を介してバイナリ データを postgres に入れるにはどうすればよいですか?
多くの手順の 1 つとして、生のバイナリ BLOB データをデータベースに保存および取得する必要がある Haskell アプリケーションがあります。代わりに、そのデータをプレーンディスクファイルに保存することを完全に決定しているわけではありませんが、それにより、追加のアクセス許可の問題が発生し始めるので、今はデータベースを使用したいと考えています.
type の列を持つテーブルを作成しましたbytea
。
メモリに遅延バイト文字列があります。
こんな風に電話したら
postgres はデータに少し腹を立てます。正確なエラーメッセージは
また、データ ストリームに NUL 値があることも間違いなくわかっています。では、これらすべてを念頭に置いて、挿入のためにデータを安全にエンコードする正しい方法は何でしょうか?
更新しました
これが私のテーブルの説明です
これは、jamsdidh のコードを追加した後に私が抱えている現在の問題を示すモジュールの全文です。私のエラーメッセージは、上記のエンコーディングの問題から「バイトタイプの入力構文が無効です」に変わりました。
sql - SQL データベースからのデータのシリアル化解除
データベースに支えられた小さなアプリケーションがあります(SQLiteですが、質問にはあまり関係ありません)。次のようないくつかのタイプを定義しました。
タイプは DB 内のテーブルにマップされます。データを読み取ると、次のような関数を書くことになります。
(わかりやすくするために、処理エラーは省略しています。)
このような関数を書くのは本当に面倒で、ボイラープレートを大量に作成するように感じます。SqlValues のグループを Haskell データに変換するより慣用的な方法はありますか?
haskell - SQLite3 と HDBC から取得したネストされたモナドを効率的に操作する方法
モナドを効率的に操作することに関しては、まだ「そこ」に達していないことを認めなければならないので、これが簡単な質問である場合はご容赦ください。また、この質問は私が現在取り組んでいる実際の実装よりも概念に関連しているため、動作するコードを提供していないことをお詫びする必要があります。
私は SQLite(3) データベースに対して作業を行っています。もちろん、それにクエリを送信して結果を取得したいと考えています。すでに IO にあるため、関数は変換が必要な をfetchAllRows
返します。[[SqlValue]]
SQLite はテキストと浮動小数点値に関して非常にリベラルであるため (Haskell は型に関してはまったくリベラルではありません)、安全な変換を使用するのsafeFromSql
が適切と思われます。さて、これらすべてを 1 つの関数で行うことができた場合、その関数は次のようになります。
またはそのようなものですよね?ネストされたモナドの構造を扱うことは、私が気付いていない作業を容易にする標準的な方法があるほど一般的である(そして十分に面倒である)ように思えますか?
sql - 生成された SQL クエリが、sqlite3 HDBC の対応する静的クエリと同じものを返さない
Haskell で SQL クエリを生成し、HDBC を使用して SQLite(3) データベースに送信しています。さて、この関数はクエリを返します:
これをデータベースに適用すると、正しいものが返されます。
出力:
[[SqlByteString "1",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "2"],[SqlByteString "1",SqlByteString "2",SqlByteString "6",SqlByteString "0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "fourth"],[SqlByteString "2",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "second"],[SqlByteString " 2",SqlByteString "2",SqlByteString "6",SqlByteString "0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "4"],[SqlByteString "3",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "秒"],[SqlByteString "3",SqlByteString "2",SqlByteString "6",SqlByteString " 0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "4番目"]]
ここで、次のようにいくつかの小さな動的パーツをクエリに挿入する必要がある場合 (申し訳ありませんが、これを表示するには文字列の最後までスクロールする必要があります):
同じことをすると、次のようになります。
[]
2 番目のクエリが何も返さない (または、実際には同じことを返す) のはなぜですか?
何か案は?
編集:
これはどういうわけかレイジーに関係しているのではないかと考えて、これをさらに調査しました。OK、 は次のように再形成されました。
残念ながら、これは問題の解決にはなりません (そして、ghci で関数の戻り値を :sprint すると、まだ評価されません)。だから、怠惰がどういうわけか問題かもしれませんが、これを完全に評価する方法がわかりません..?何かアイデアはありますか?