1

の行数を取得したいのですDataSetが、ここのコードは例外をスローします

Dim con As New SqlConnection("server=localhost;database=MSDSS;Integrated Security=True")
Dim i As Integer
con.Open()
Dim qstr As String = "Select * From SJournal"
Dim sqladp As New SqlDataAdapter(qstr, con)
Dim dt As New DataSet

sqladp.Fill(dt, "SJ")
Dim j As Integer = dt.Tables("SJ").Rows.Count
For i = 0 To j Step 1
    Dim rowname As String = dt.Tables("SJ").Rows(i)("JournalName")
Next

文字列の類似度を計算する方法は次のとおりです

Dim Kq As Double = 2
Dim Kr As Double = 1
Dim Ks As Double = 1
Dim ss() As Char = rowname.ToCharArray()
Dim st() As Char = journalname.ToCharArray()
Dim q As Integer = ss.Intersect(st).Count()
Dim s As Integer = ss.Length - q
Dim r As Integer = st.Length - q
Dim total As Double = (Kq * q) / (Kq * q + Kr * r + Ks * s)

解決策を教えてください

4

3 に答える 3

1

は配列のDatatableように機能し (何らかの形で for で使用すると)、配列のインデックスの数値は 0 から N-1 になります。

N が行数であることを考慮すると、これを変更する必要があります

Dim j As Integer = dt.Tables("SJ").Rows.Count

Dim j As Integer = dt.Tables("SJ").Rows.Count -1

したがって、 3 を取得した場合rows、 for サイクルは 0 から 2 になります

于 2012-09-04T03:48:42.617 に答える
0

dataadapter を使用している場合は、接続を明示的に開く必要はありません。

詳細については、http: //forums.asp.net/t/1663393.aspx/1をご覧ください。

于 2012-09-04T06:13:14.580 に答える
0

私はあなたのforループを期待します

For i = 0 To j Step 1
    Dim rowname As String = dt.Tables("SJ").Rows(i)("JournalName")
Next

上限として j-1 を持つ必要があります。

For i = 0 To j-1 Step 1
    Dim rowname As String = dt.Tables("SJ").Rows(i)("JournalName")
Next
于 2012-09-04T03:27:40.530 に答える