2011-12-31 24 views
1

SQLコンパクトデータベースを使用しており、インポートして正確なファイルパスをコードにコピーすると接続をテストできますが、まだ開かれていないと表示されます。私は間違って何をしていますか?すでにデータベースをプロジェクトに追加している場合、ショートカットはありますか?SQLCompactデータベースを開くことができません

ありがとうございます!すぐにこの行の後

Imports System.Data.SqlServerCe 

Module Module1 

Sub Main() 

    Dim constring As String = "Data Source=C:\Users\test\Desktop\MyDatabase1.sdf" 

    Dim conn As New SqlCeConnection(constring) 

    Dim cmd As New SqlCeCommand("SELECT * FROM ACCOUNT") 

    conn.Open() 

    Dim reader As SqlCeDataReader = cmd.ExecuteReader() 

    While reader.Read() 
     Console.WriteLine(reader) 
    End While 


End Sub 

End Module 

答えて

2

あなたはコマンドへの接続を割り当てる必要が

conn.Open() 

追加:

cmd.Connection = conn 

また、あなたはに接続を追加することができますコマンドのコンストラクタ:

Dim cmd As New SqlCeCommand("SELECT * FROM ACCOUNT", conn) 
+0

ありがとうございます。それが問題ではない場合は、私のループを見てみることができます。私は、コンソールに各行を印刷しようとしていますが、私はちょうどオブジェクトへの参照を取得します。私はPythonから来て、あなたが繰り返し処理できるリストとしてクエリを返します。 vb.netにはこれを可能にする機能がありますか? –

+1

@ LanceCollins:あなたのように読者をループすると、ループ内の読者オブジェクトは現在の行を指します。その行からデータを取得するには、最初の列を取得する 'reader(0)'、指定された列を取得する 'reader(" columnName ")'(どちらもデフォルトへのショートカットです) 'Get'メソッド、' Get'メソッド、 'Get'メソッドは' GetOrdinal'を使って最初に取り出すことのできるカラムインデックスの序数を必要とします。 。 –

1

SQL Server CE(3.5)を使用する主な利点の1つは、Linq to SQLを使用することです。厳密に型指定されたデータベースとDataContextを使用する必要があります。その場合、新しいDataContextの作成は8ではなく、1行のコードになります。また、DataBaseファイルが存在しない場合、DataContextのCreateDataTableメソッドが作成します。古いファッションOLEDBデータプロバイダのようにSQL Server CEを使用しているので、これを少し掘り下げてみてください。うーん...最適ではありません:-)

+0

私はLINQの本を買っているので、ネットには新しくなっています。 –

+0

なぜあなたはまだ、msdn、ネット上のチュートリアルにいくつかの入力があります。その他Linq To Sqlの概要はこちらhttp://dotnetjquerymvcbugkiller.wordpress.com/2011/07/08/linq-beats-sql/ – GameAlchemist

+0

Vincent - SQLCompact 3.5に関するいくつかの調査を行いましたが、私は考えていませんVB 2010 Expressを使用しているので、LINQをSQLに利用できるようになります。情報をお寄せいただきありがとうございます。プロフェッショナル版のために$を外に出す。 –

関連する問題