SQL を使用して、理想的には ADO (クラシック) & VBScript (または Visual Basic 6) で数バイトを Binary (または varbinary) フィールドに渡す方法を知っている人はいますか?
10 ~ 20 (おそらくそれ以上) バイトのデータをエンコードし、このデータを SQL db フィールドに格納したいと考えています。(MS-SQLSVR ではありませんが、標準の SQL サポート形式が機能することを願っています!)
バイトは、AscB/ChrB を介して取得されたバイトの文字列、または「バイト」の配列 (実際には「cbyte」を介して取得されたバイト型のバリアント) として利用でき、配列に格納されます。
最初のオプション: 文字列形式 を使用して、次のように SQL 挿入を作成することに (限定的に) 成功しました。
x = ".>?hD-&91k[=" '<psuedo string of chars, some unprintable
Insert Into rawtest (byt) Values (CAST('" & x & "' as SQL_BINARY(12)))
しかし、文字列のヌルによってフィールド内のデータが切り捨てられ、その他の印刷されない制御文字がデータの処理の邪魔になるのではないかと心配しています。これを回避する方法はありますか?
2 番目のオプション: バイト配列 データを配列に入れるのは簡単ですが、SQL Insert ステートメントに渡す方法がわかりません。12 バイトを渡そうとすると、CAST がデータを整数 (4 バイト) に格納しようとするため、挿入は失敗します。1 バイトを渡すと、次のように機能します。
x = a(0)
4 バイトの間は引き続き機能しますが、整数がオーバーフローすると失敗します。また、データを並べ替えます
私はさまざまな回避策を使用しようとしました:
Insert Into rawtest (byt) Values (CAST('12,34,45' as SQL_BINARY(12)))
Insert Into rawtest (byt) Values (CAST(&h12&h34 as SQL_BINARY(12)))
Insert Into rawtest (byt) Values (CAST(0x123456789012 as SQL_BINARY(12)))
私も同様の組み合わせを試しました:
Insert Into rawtest (byt) Values (CONVERT('" & x & "', SQL_BINARY)
しかし、これらはすべて失敗します。
理想的には、最大 20 バイトの小さなバイナリ配列 (理想的には 0 ~ 255 の完全なバイト範囲ですが、それより少なくてもかまいません) を受け取り、それらをプレーンな生のバイナリ SQL フィールドに渡すメソッド、任意のメソッドが必要です。
理想的には VBScript/ADO でこれを行う必要がありますが、可能な場合は VB6 ベースのソリューションを使用できます。これを「生の」バイナリとして使用したいのですが、Base64 のような ascii エンコーディングは使用したくありません。
私はしびれるまでグーグルで検索しましたが、SQLのバイナリフィールドに関連するものはまったく見つかりませんでした。
手伝ってくれますか?どんな答えでも大歓迎です。多くのthx。