VB.NET에서 InterSystems Cache '에서 데이터를 읽는 방법

InterSystems Cache '측 준비
Cache’ 아이콘 → 스튜디오 시작

파일 → 새로 만들기 → Cache '클래스 정의 선택

클래스 이름(=테이블 이름) 입력(여기서는 User.Main.TestClass)

%Persistent를 선택하여 완료
User.Main.TestClass에 다음 코드를 입력

TestClass.cls
Class User.Main.TestClass Extends %Persistent
{

Property name As %String;

// field name 1

Property age As %Numeric;

// field name 2

Query ByName(str As %String = "") As %SQLQuery(CONTAINID = 1, SELECTMODE = "RUNTIME") [ SqlName = SP_TestClass_By_Name, SqlProc ]
{
   SELECT *
   FROM TestClass
   WHERE (name %STARTSWITH :str)
   ORDER BY ID
}
}



· 데이터 입력(VB.NET 사용)
마지막 기사 참조
htps : // 코 m / 토리 씨 _ / ms / 7 아 d7123409 아 27b8c0f0
Visual Studio에서 ObjectBinding에서 TestClass를 낸 VB.NET의 코드를 출력하고 가져와서(폼 애플리케이션의 Form1에 버튼을 만들어) 레코드를 작성한다.

Form1

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim cacheConnectStr As String = "Server = localhost; Port=1972;" +
               "Log File = C:\VSProject\NewCarte\NewCarte\NewCarte\bin\NewCarte.log; Namespace = USER;" +
               "Password = yourpass; USER ID = yourid"
        Dim cnCache As CacheConnection = New CacheConnection(cacheConnectStr)
        cnCache.Open()


        Dim d As User.Main.TestClass
        d = New User.Main.TestClass(cnCache)
        d.name = "Sakurai Ichiro"
        d.age = 25
        d.Save()
        d.Close()
        d = New User.Main.TestClass(cnCache)
        d.name = "Sakurai Jiro"
        d.age = 32
        d.Save()
        d.Close()
        d.Dispose()
        cnCache.Close()

    End Sub
End class

이와 같이 2 레코드가 추가된다.


버튼을 하나 더 만들고 Form1의 Button2에 대해 다음과 같이 기술한다.

Button2

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim cacheConnectStr As String = "Server = localhost; Port=1972;" +
               "Log File = C:\VSProject\NewCarte\NewCarte\NewCarte\bin\NewCarte.log; Namespace = USER;" +
               "Password = yourpass; USER ID = yourid"
        Dim cnCache As CacheConnection = New CacheConnection(cacheConnectStr)
        cnCache.Open()

        'Cache'内のコマンドを呼び出す方法(ここではByName関数を呼び出している。)
        Dim cmd1 As CacheCommand
        cmd1 = User.Main.TestClass.ByName(cnCache)
        Dim Name_param1 As CacheParameter = New CacheParameter("name", CacheDbType.NVarChar) '読みだしたいフィールドの指定。パラメータにしてよい
        Name_param1.Value = "Sakurai" '該当氏名を検索
        cmd1.Parameters.Add(Name_param1) '検索条件をパラメータに追加 "name = "Sakurai""
        Dim reader1 As CacheDataReader = cmd1.ExecuteReader() 'BasicPatientInformationの中でptidは一意

        '読み出し用。OpenIdで既存のレコードと結び付けられるので、Newは不要
        Dim d1 As User.Main.TestClass

        'データがある分だけ読み出す。ここでは2個
        Dim id As String
        While reader1.Read()
            id = reader1(reader1.GetOrdinal("ID")).ToString() 'データが格納された先頭からID番号を拾う
            d1 = User.Main.TestClass.OpenId(cnCache, id) 'ID番号でデータベースにアクセスする
            MsgBox(d1.Id + " " + d1.name + " " + CStr(d1.age))
        End While

    End Sub

실행 결과는 다음과 같다. 여기에서는 MsgBox로 표시할 뿐입니다만, 이 읽은 데이터로부터, 등록된 ID 번호를 알 수 있고, 이 ID로 OpenId를 한다는 방법으로, 개별의 레코드에 액세스 합니다.



이 프로그램에서는 Sakurai만 입력했기 때문에 검색 조건에 맞기 때문에 두 레코드 모두 출력되었지만 다른 이름이 들어 있으면 읽히지 않습니다. (추출 기능) 모든 레코드를 읽으려면,

Name_param1.Value = ""

라고 기술하면 읽을 수 있습니다.

좋은 웹페이지 즐겨찾기