'vb.net'에 해당되는 글 22건

(vb.net) DataTable 예제

vb.net

Module Module1

    Sub Main()
' Get a DataTable instance from helper function.
Dim table As DataTable = GetTable()
    End Sub

    ''' <summary>
    ''' Helper function that creates new DataTable.
    ''' </summary>
    Function GetTable() As DataTable
' Create new DataTable instance.
Dim table As New DataTable

' Create four typed columns in the DataTable.
table.Columns.Add("Dosage", GetType(Integer))
table.Columns.Add("Drug", GetType(String))
table.Columns.Add("Patient", GetType(String))
table.Columns.Add("Date", GetType(DateTime))

' Add five rows with those columns filled in the DataTable.
table.Rows.Add(25, "Indocin", "David", DateTime.Now)
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
Return table
 
    End Function

End Module



Module Module1

    Sub Main()
' This calls the GetTable method from above.
Dim table As DataTable = GetTable()

' Access Rows property on DataTable.
For Each row As DataRow In table.Rows
   ' Write value of first Integer.
   Console.WriteLine(row.Field(Of Integer)(0))
Next
    End Sub

End Module











Dim workRow As DataRow = workTable.NewRow()


workRow("CustLName") = "Smith"
workRow(1) = "Smith"

workTable.Rows.Add(workRow)





Dim workRow As DataRow
Dim i As Integer

For i = 0 To 9
  workRow = workTable.NewRow()
  workRow(0) = i
  workRow(1) = "CustName" & I.ToString()
  workTable.Rows.Add(workRow)
Next





Name
Password
Homepage
Secret

(vb.net) GetUpdateCommand() - 오류

vb.net
"키 열 정보를 반환하지 않는 SelectCommand에 대해서는 UpdateCommand에 대한 동적 SQL 생성이 지원되지 않습니다."

이 에러 문구 하나로 3일을 소요해야만 했습니다.  

원인은 테이블의 row값을 추가하기 위해서는 테이블에 프라이머리 키가 꼭 있어야지만 가능합니다. 

해결하기 위해서는 서버쪽 테이블 정보에 프라이머리 키를 지정해주면 됩니다.  

 
ㄱㅁㅇ 2018.01.09 19:17 신고 URL EDIT REPLY
저도 이게 문제였는데
해결됐네요. 정말 감사합니다.
Name
Password
Homepage
Secret

(vb.net) 데이터집합 편집(편집, 삽입, 삭제, 업데이트, 커밋)

vb.net
Data Table 행 편집

1. 편집할 행의 인덱스를 알지 못하는 경우 DataTable의 레코드 편집

생성된 FindBy 메서드를 사용하여 특정 DataRow를 변수에 할당한 다음 해당 변수를 사용하여 편집할 열에 액세스하고 새 값을 할당합니다.

Dim customersRow As NorthwindDataSet.CustomersRow
customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI")

customersRow.CompanyName = "Updated Company Name"
customersRow.City = "Seattle"


대개 편집할 행의 인덱스를 알지 못합니다. 형식화되지 않은 데이터 집합의 데이터 테이블은 DataRow의 배열을 반환하는 Select 메서드와 함께 만들어집니다.
 
형식화되지 않은 데이터 집합의 기존 레코드를 업데이트하려면(행 인덱스를 알지 못하는 경우)
 
DataTable 의 Select 메서드를 사용하여 특정 행을 찾고 원하는 열에 새 값을 할당합니다.

 Dim customerRow() As Data.DataRow
customerRow = DataSet1.Tables("Customers").Select("CustomerID = 'ALFKI'")

customerRow(0)("CompanyName") = "Updated Company Name"
customerRow(0)("City") = "Seattle"


2. 편집할 행의 인덱스를 알고 있는 경우  DataTable의 레코드 편집

DataSet1.Tables(0).Rows(4).Item(0) = "Updated Company Name"
DataSet1.Tables(0).Rows(4).Item(1) = "Seattle"


DataSet1.Tables("Customers").Rows(4).Item("CompanyName") = "Updated Company Name"
DataSet1.Tables("Customers").Rows(4).Item("City") = "Seattle"


DataTable에 행 추가

1. 형식화된 데이터집합에 새 레코드 삽입

데이터 집합의 새 인스턴스를 선언합니다. 

Dim newCustomersRow As NorthwindDataSet.CustomersRow
newCustomersRow = NorthwindDataSet1.Customers.NewCustomersRow()

newCustomersRow.CustomerID = "ALFKI"
newCustomersRow.CompanyName = "Alfreds Futterkiste"

NorthwindDataSet1.Customers.Rows.Add(newCustomersRow)




2. 형식화되지 않은 데이터집합에 새 레코드 삽입


Dim newCustomersRow As DataRow = DataSet1.Tables("Customers").NewRow()

newCustomersRow("CustomerID") = "ALFKI"
newCustomersRow("CompanyName") = "Alfreds Futterkiste"

DataSet1.Tables("Customers").Rows.Add(newCustomersRow)



DataTable에서 행 삭제

NorthwindDataSet1.Customers.Rows(0).Delete()


DataSet1.Tables("Customers").Rows(0).Delete()

 

변경 내용 커밋

업데이트, 삽입, 삭제하고 나서 DataSet, DataTable 또는 DataRow의 AcceptChanges 메서드를 호출하여 변경 내용을 커밋할 수 있습니다.

NorthwindDataSet1.Customers.AcceptChanges()







쿼리로 삭제와 삽입

        Dim con As New SqlConnection
        Dim cmd As New SqlCommand


        Try
            con.ConnectionString = "Data Source=서버명; Initial Catalog=DB명;Persist Security Info=True;User ID=sa;Password=암호"
            con.Open()
            cmd.Connection = con

            cmd.CommandText = "DELETE FROM [ACTDB].[dbo].[PA25230R] WHERE RCHECKNO='홍길동'"
            cmd.ExecuteNonQuery()

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Delete Records")
        Finally
            con.Close()
        End Try


        MsgBox("레코드가 삭제되었습니다. ", MsgBoxStyle.Information, "삭제 완료")

        Me.Dispose()







 
Name
Password
Homepage
Secret

(vb.net) Null 값 처리

vb.net


Reader("test") Is System.DBNull.Value 
Reader(0).ToString() = " "  
Reader.IsDBNull(0) = True  

첫 번째 방법이 잘 됩니다.


DBNull : DB에 쿼리를 날렸을때 컬럼의 값이 Null 인경우, DBNull 로 취급

null : 빈테이블을 조회했거나 조건에 맞는 값이 없을 경우 null 로 취급.

DB에 Insert 할때 Insert 시킬 값이 Null 인경우 DBNull.Value 을 Insert 


Name
Password
Homepage
Secret

(vb.net) DataSet.Tables.Clear() 와 DataSet.Clear() 차이, DataSet 복사, 병합

vb.net
DataSet.Tables.Clear()는 데이터셋 내의 모든 테이블의 Row 데이터를 삭제하면서 테이블도 모두 삭제한다. 

DataSet.Clear()는 테이블의 Row 데이터만 삭제한다. Row 데이터를 제외한 테이블은 삭제되지 않는다.




DataSet2 = DataSet1.Copy()  --> DataSet의 구조와 데이터를 모두 복사합니다.
 
DataSet2.Merge(DataSet1)  --> DataSet1의 데이터를 DataSet2에 병합 합니다.
 
DataSet2 = DataSet1.Clone()   --> 스키마, 관계 및 제약 조건을 포함하여 DataSet의 구조를 복사합니다. 데이터는 복사하지 않습니다.
 


Name
Password
Homepage
Secret

티스토리 툴바