データベースをデータソースとして特定の行を抽出するには?

解決


SHIN  URL  2008-10-04 10:55:43  No: 140569

VB2008Express Editionで開発しております。
Option Strict On
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim str1() As String
        Dim k As Integer

        ReDim str1(20)
        'cドライブ直下の日本史問題.cmtファイルをShift_Jisのエンコードで読む。
        Dim reader As New IO.StreamReader("C:\日本史問題.cmt", System.Text.Encoding.GetEncoding("Shift-JIS"))

        Do Until reader.EndOfStream
            str1(k) = reader.ReadLine
            k = k + 1
        Loop

        reader.Close()

        Dim results = From questions In str1 Where questions.Length < 50
        ListBox1.Items.AddRange(results.ToArray)

    End Sub
End Class

このような場合、データソースが配列ですので、何の問題もなくIEnumerable(T)型でlistboxにresultsの値を表示できたのですが、データベースの特定のフィールドを抽出したい場合、

Dim results = From questions In str1 Where questions.(列名) = (値)としてもハンドルできないエラーになってしまいます。

MSDNサイトで調べたところ、あらかじめコード上でのデータベース入力が必要なサンプルは載っていましたが、MDBファイルを取り込んでの資料等は他サイトでも載っていないようでした。

どなたかご教授願えませんでしょうか。


特攻隊長まるるう  2008-10-04 22:07:18  No: 140570

データベース検索時の SQL 文の Where 句で指定すれば良い話では?


YuO  2008-10-04 23:56:15  No: 140571

> ハンドルできないエラーになってしまいます。

そのエラーというか例外の内容 (型,Messageの値,InnerException,etc.) が重要なのであって,
「ハンドルできないエラーになる」というだけでは,「事象が起こっていることの表記」以上の意味を持ちません。
# ハンドルされない例外とか,そういう表現じゃなかったかな,と思うのですが。

> MDBファイルを取り込んで

SQL ServerおよびSQL Server Compact 3.5を除くADO.NETデータプロバイダは,現時点ではLINQ to SQLには対応していません。
ref) http://msdn.microsoft.com/ja-jp/bb386929.aspx

ADO.NET Entity Framework経由で使うことも現時点ではできないようなので,LINQ to DataSetを使うことになります。
でも,そこまでやるとLINQ使う必要性が……。


bargel  URL  2008-10-11 18:01:18  No: 140572

レスおそくなりまして、すみません。

>特攻隊長まるるうさん 
確かにそうですね、少しLINQにこだわりすぎていたようです。
ありがとうございます。

>Yuoさん
>SQL ServerおよびSQL Server Compact 3.5を除くADO.NETデータプロバイダは,現時点ではLINQ to SQLには対応していません。
SQL ServerおよびSQL Server Compactで再試行したところ、うまくいきました。ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加