こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB 2010 Expressでのデータベース利用

現在Microsoft VisualBasic 2010 Expressにて、データベースを利用してアプリケーションを作成しようとしています。
今まではMS Access にて制作しておりましたので、完全な初心者というわけではありませんが、VB2010Express を使ってのソフト作成は初めてです。
データベースエクスプローラーを使ってデータの接続や、データセットを作成してのデータの編集はできました。

ここからが質問ですが、直接コードを書き込みデータベース操作をする際のデータベースへの接続方法がわかりません。

VBの書籍やヘルプを参考にして以下のようなコードを作成しました。

Dim scn As New OleDb.OleDbConnection
scn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ファイル名"

scn.Open()
(以下省略)~

このコードを実行すると次のようなエラーがでます。

「OleDb.OleDbException はハンドルされませんでした。
データベースの形式 'ファイル名' を認識できません。」

ファイル名(C:\Users\~\ファイル名.sdf)はデータベースエクスプローラーで作成したSQL Server Compact 3.5 のデータベースファイルです。

単純にデータベースエクスプローラーで作成したデータベースに、上記コードで接続することはできないのでしょうか?
また、コードに間違いなどはありますでしょうか?
よろしくお願いします。

投稿日時 - 2012-05-20 12:40:43

QNo.7485906

困ってます

質問者が選んだベストアンサー

SQL Server CEでは,
System.Data.OleDb名前空間のクラスではなく,
System.Data.SqlServerCe名前空間のクラスを利用します。

OleDb.OleDbConnection → SqlServerCe.SqlCeConnection
のように,名前空間とクラス名を置き換える必要があります。
# System.Data.SqlServerCe.dllへの参照を忘れずに

MSDN: System.Data.SqlServerCe 名前空間
http://msdn.microsoft.com/ja-jp/library/ec4st0e3(v=vs.90)

また,接続文字列も変更する必要があります。
MSDN: SqlCeConnection.ConnectionString Property (System.Data.SqlServerCe)
http://msdn.microsoft.com/ja-jp/library/system.data.sqlserverce.sqlceconnection.connectionstring(v=vs.90)
基本的にはData SourceとPasswordを設定すればよいでしょう。


一応,OLEDBプロバイダもあるようなので,
Microsoft Jet OLEDB4.0というJETエンジンの使用宣言ではなく,
Microsoft.SQLSERVER.CE.OLEDB.3.5というSql Server Compact 3.5の使用宣言にすれば,
OLEDB経由でも使えるようです。
Site: SQL Server Compact OLE DB Provider
http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/cc6db680-1d33-4c9b-8b67-9334b3383904/
# 私は使ったことが無いため,評価は控えます。

投稿日時 - 2012-05-20 13:34:05

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>データベースエクスプローラーで作成したSQL Server Compact 3.5 のデータベースファイルです。
がどういったのかは知らないのですが、SQL Serverの類であれば。

http://c.oshiete.goo.ne.jp/kotaeru_reply.php3?q=7485906
の情報が参考になりませんでしょうか。
多分、IDとかパスワードとか設定されたと思うのですが。

そのあたりだけが、アクセスと思います。

投稿日時 - 2012-05-20 13:39:02