2016-08-18 10 views
0

キャッシュクラス文字列(MAXLEN = 1024000)プロパティに相当に長い文字列を保存しようとしています。Intersystemsキャッシュ文字列%Stream.GlobalCharacter

文字列は約32,000文字の長、その代わりに(それは価値がある何のためにJSONオブジェクトである)文字列の内容を格納するのである私がロードしようとすると、それは

[email protected]%Stream.GlobalCharacter

How data is saved

を保存します私のC#プログラムの文字列の内容は文字通り上記の文字列を取得しますが、JSONは取得できません。キャッシュのWebとターミナルインターフェイスを介してテーブルを表示すると、上記の文字列も表示されます。

もう1つのJSON文字列が23,000文字ほどあり、問題なく保存して読み込みます。

私は[email protected]%Stream.GlobalCharacterがデータを格納する方法であることを理解していますが、簡単に文字列としてロード/保存することができます。

更新

sql = "INSERT INTO Namespace.Table (Name, Active, Revision, Definition) VALUES (?, 1, ?, ?)"; 

cC = new CacheCommand(sql, dbConn); 
cC.Parameters.Add(new CacheParameter("name", formType)); // string 
cC.Parameters.Add(new CacheParameter("revision", revision)); // int 
cC.Parameters.Add(new CacheParameter("definition", formData)); // string 

cC.ExecuteNonQuery(); 

string sql = "SELECT TOP 1 * FROM Namespace.Table WHERE Active = 1 AND Name = ? ORDER BY Revision DESC"; 
CacheCommand cC = new CacheCommand(sql, dbConn); 
cC.Parameters.Add(new CacheParameter("name",formType)); 
CacheDataReader rdr = cC.ExecuteReader(); 
while(rdr.Read()) 
{ 
    string json = rdr["Definition"].ToString(); 
} 
+1

データを保存して読み込む方法がわかりませんが、それは.NETコードだけですか、COSでもかまいません。可能であれば、両側からいくつかのコード例が必要です。 – DAiMor

+0

申し訳ありませんが、C#コード –

+1

で質問を更新しました.Netに慣れていませんが、ToString()を使用するとわかりますが、この場合はもちろんこのオブジェクトのクラスを取得します。私はあなたが文字列に変換する前に、このオブジェクトを取得する必要がありますと思います。 – DAiMor

答えて

0

は行ったことがあり、次のように私は、データをロードしていますが、次のように私はC#ASP.Netアプリケーションにデータを保存しようとしていますIntersystemsと話しています(Nicoleに感謝します)。解決方法は%Stringではなく%Stream.GlobalCharacterにプロパティタイプを設定することです。

文字列が自動的に文字列に変換されるので、C#パースペクティブから継ぎ目がなくなり、.ToString()メソッドを使用して文字列をもう一度取得することができます。インターシステムズから以下

:私は少しさらに、このに見てきたと私はここで何が起こっているか についての理論を持っている

。 Cachéの特定のバージョンでは、 という文字列をODBC経由でCachéデータベースに挿入すると、 が自動的に文字ストリームに変換されることがわかりました(私は16k文字だが、 とは確信していません)。しかし、プロパティ はサーバー上の%Stringとして定義されているため、文字列リテラル "[email protected]%Stream.GlobalCharacter"はストリームの内容を指す OREFの代わりにデータベースに格納されます。次に、 定義値を選択すると、文字列は "[email protected]%Stream.GlobalCharacter"になります。

関連する問題