2012-03-21 13 views
0

私は私のMs SQL 2008データベースの1つのフィールドに格納したいvb .net ArrayListを持っています。それを入れて、それをArrayListとして戻すことは可能ですか?データベースに.Net ArrayListを格納しています

私は配列を分解して文字列として格納する必要があると推測していますが、配列のsqlのデータ型は表示されません。それは私のためのバマーです!

誰もがこれを行うための最善の方法を提案できますか?

多くのありがとうございます。

編集 - ArrayListには、一連の見積もりIDが格納されています。どのくらいの大きさに制限がないので、1つまたは1001の異なるIDを保持することができます

+0

このArrayListの中で何があなたがタイプに建てられたが、これは注意すべきものです使用しているので、それはあなたのケースに当てはまるわけではありませんか? – Aliostad

+0

@Aliostad私は質問を編集しました。それは、見積もりIDのセットを保持する –

答えて

1

これはおそらく1対多の関係の一部です。たとえば、ArrayListが文字列を格納しているとし、別のテーブルを作成します。このテーブルでは、この文字列値にフィールドが1つあります。あなたは、このような

var serializer = new XmlSerializer(typeof(ArrayList)); 
var buffer = new StringBuilder(); 
using(var tw = new XmlTextWriter(new StringWriter(buffer)){ 
    serializer.serialize(tw, myArrayList); 
} 
var xml = buffer.ToString(); 
としてシリアライザを使用することができます

0
など、保存されたproceedureを呼び出してDBに一度に一つのレコードを追加し、そこを通して、あなたのDALCクラスとループにPARAMとしてのArrayListを送ることができます

が、いくつかの警告があります。

0
Dim no As Integer() = {11, 22, 33, 44} 
     Dim MS As New System.IO.MemoryStream 
     Dim bin As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 
     bin.Serialize(MS, no) 
     Dim bytes(MS.Length - 1) As Byte 
     MS.Position = 0 
     MS.Read(bytes, 0, bytes.Length) 
     .... 
     ... 
     cmd.ComandText="insert into TableName values (@data)" 
     cmd.Parameters.Add("@data", SqlDbType.Image, bytes.Length).Value = bytes 

出典:http://www.daniweb.com/software-development/vbnet/threads/253410/save-array-to-database

関連する問題