エラー発生!WindowsXPでVB2008でのDB接続エラー発生に対策方法は?

このQ&Aのポイント
  • 下記の環境でプログラムを作成していましたが、エラーが発生してしまいました。対応方法を教えてください。
  • WindowsXP Pro、Microsoft Visual Basic 2008(Visual Studio 2008)、SQL Compact 3.5を使用している中で、DB接続の宣言部分でエラーが発生しています。
  • エラーメッセージによると、必要な参照がプロジェクトに追加されていないとあります。参照設定はプロジェクト>追加 から行われており、対策方法がわかりません。
回答を見る
  • ベストアンサー

下記の環境でプログラムを作成していましたが、エラーが発生してしまいまし

下記の環境でプログラムを作成していましたが、エラーが発生してしまいました。 対応わかる方がいらっしゃいましたら、教えてください。 OS:WindowsXP Pro プログラム:Microsoft Visual Basic 2008(Visual Studio 2008) DB:SQL Compact 3.5 参照設定:System.Data.SqlServerCe C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll プログラム内容 Imports System.Data.SqlServerCe 1: Dim cn As New System.Data.SqlServerCe.SqlCeConnection 2: Dim SQL As System.Data.SqlServerCe.SqlCeCommand 3: Dim dr As System.Data.SqlServerCe.SqlCeDataReader 1のDB接続の宣言部分で エラー 1 基本クラス 'System.Data.Common.DbConnection' を含むアセンブリ 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' への参照が必要です。参照をプロジェクトに追加してください。 2と3も類似のエラーが発生しています。 いろいろ調べてみたら参照設定がされてないということがわかったんですが プロジェクト>追加 からの参照設定はしており、対策方法がみあたりません。 もし対策がわかりましたら教えてください。よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Sytem.Dataに対する参照設定を忘れていませんか? System.Data.SqlServerCeだけだと DataTableやDataSetなどのDBを扱う基本部分が含まれていないので質問のようなエラーになるのではと思います

HIDE022
質問者

お礼

回答ありがとうございます。 System.Data.SqlServerCeでDB関連がフォローされてると勘違いしてました。 Sytem.Dataを追加しましたら、エラーが解消されました。

関連するQ&A

  • 既存のAccessのテーブルに空の領域を作成する

    既存のAccess2000のテーブルに空の領域を作成する プログラムを作っているのですが(下記参照)、 「データベースの形式 <ファイル名> を認識できません。(Error 3343)」の エラーが出ます。 【状況説明】 ・パスの内容、パス名、DB名はあっています。 ・編集前のDB前に戻して(テーブル内に空白データが無い状態)、  再実行してもダメでした。 ・参照設定「DAO 3.51 Object Libraly」はチェックしています。  「DAO 3.6 Object Libraly」にチェックすると、  「この名前は既にあるモジュール、プロジェクト、オブジェクト  ライブラリで使われています。」のメッセージが出て、チェック出来ません。 解決方法がありましたら、記入をお願い致します。 【作成プログラム】 'DB関連設定  Dim DBName As String(iniファイルから取得したDB名)  Dim SQL As String (SQL文領域)  Dim DB名  As DAO.Database 'データベース接続 Set DB = OpenDatabase(iniファイルから取得したパス & "\" &               DBName) '領域作成 Do While 数値 > 0 SQL名 = "" SQL名 = SQL名 & "INSERT INTO テーブル (A, B, C) " SQL名 = SQL名 & "VALUES ("", "", ""); " db.Execute (SQL) 数値 = 数値 - 1 Loop db.Close

  • エラーを発生させたい(SQLサーバーへの接続)

    ネットのサンプルコードでSQLサーバーの接続テストをしましたが、 存在しないSQL文でもエラーになりません。(vb2005です) Sub sqlサーバーへ接続() ' 接続文字列を生成する Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim stConnectionString As String = String.Empty stConnectionString &= "Data Source = ××××\SQLEXPRESS;" stConnectionString &= "Initial Catalog = ×××;" stConnectionString &= "Integrated Security = SSPI;" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() SQL = Cn.CreateCommand SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1" '間違ってても進んでしまう。 ' 接続に成功した旨を表示する MessageBox.Show("Microsoft SQL Server に接続されました") ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose() End Sub 「あああフィールド1」なんて存在しないのに、先に進んでしまいます。 エラー処理の仕方を教えてください。 よろしくお願いします。

  • SELECT文を発行して、ACCESSより取得する方法

    既存のプログラムを元に、 以下のようなソースを作成したのですが、 取得出来ませんでした。 参照設定やパスの設定、SQL文は正しいです。 どこがマズイのでしょうか? アドバイスをお願い致します。 Dim db  As DAO.Database Dim rs  As DAO.Recordset Dim SQL As String 'データベース接続 Set db = OpenDatabase("DBのパス") 'データ検索SQL SQL = "" SQL = " SELECT文 " 'ACCESSより取得 Set rs = db.OpenRecordset(SQL) db.Close rs.Close

  • MFC ADOでSQL Serverに接続するには

    初心者の初めての質問です。ご教授よろしくお願いします。 開発環境は Microsoft Visual Studio Term System 2008 OS XP SP3 Microsoft SQL Server 2005 です。 VC++ MFC、SQL Serverでプログラムを組んでいるのですが、 今DB接続に困っています。 「Provider=MSDASQL;DSN=DB名;UID=ID;PWD=PassWord」の文字列を使ってDBとの接続ができますが、 一回目のトランザクションが失敗します。 エラー内容は 「 DbConnection::Transaction COM Error:80004005 Source:Microsoft OLE DB Provider for ODBC Drivers エラーを特定できません 」 です。 解決方法を教えて頂ければ幸いです。

  • SQLServerデータをDataGridに表示時にエラーが発生

    SQLServerデータをDataGridに表示時にエラーが発生 visual Studio2008を使用し、SQLServerから条件を指定しそれをDataGridに一覧表示するvbを組んでいますが、エラーが解消しなく困っております。対応方法について教えてください。 【状況】 1 Dim St As String 2 Dim Cn As New System.Data.SqlClient.SqlConnection 3 Dim SQL As System.Data.SqlClient.SqlCommand 4 Dim ServerName As String = "Server名"  5 Dim UserID As String = "id" 6 Dim Password As String = "×××" 7 Dim DatabaseName As String = "Dbname" 8 Dim Adapter As New SqlClient.SqlDataAdapter(SQL, Cn) 9 Dim table As New DataTable 10 St = "Server=" & ServerName & ";" 11 St &= "User ID=" & UserID & ";" 12 St &= "Password=" & Password & ";" 13 St &= "Initial Catalog=" & DatabaseName 14 Cn.Open() 15 Cn.ConnectionString = St 16 SQL = Cn.CreateCommand 17 SQL.CommandText = ("SELECT * FROM CUSTOMER_M WHERE CUSTOMER_NAME LIKE " & "'%' & TextBoxName.Text & '%'") 18 Adapter.Fill(table) 19 DataGrid1.DataSource = table 20 Cn.Close() 21 SQL.Dispose() 22 Cn.Dispose() 8行目の「Adapter」がエラーになり、オーバーロードの解決に失敗しましたとメッセージが出ています。8行目の(SQl、Cn)を省くとコンパイルエラーはなくなりますが、14行目でエラーになります。 宜しくお願いします。

  • ASP.Net ObjectDataSource2

    お世話になります。 ASP.Net 初心者です。日夜修行をしているのですが、難解な壁に当たっております。 ASP.Net にてObjectDataSourceを作成し、 グリッドビューの動的なWhere句に対応させるべく 自分なりに、例題のプログラムを変形させて以下のようにさせました。 引数のSQLには 完成されたSQL文が入っております。 ObjectDataSource には MstTokDataSet.xsd を作成 その際にできたアダプターが t_MstTokTableAdapter になります。 一番簡単なプログラムを書き、動作するところまでいけば、あとは応用かなと思うのですが、 下記をデバックすると Return Comm.ExecuteReader(CommandBehavior.CloseConnection) 一番最後のこの部分で、下記のエラー表示されてしまいます。 エラー 1 型 'System.Data.Common.DbDataReader' の値を 'System.Data.DataSet' に変換できません。 まずは自分で記述したSQL文を引数に入れて、下記をボタンコントロールから実行してグリッドビューの内容を変更したいのですが、なかなかうまくいかないですね! (1)下記のプログラムの何が問題なのか? (2)考え方は正しいのか? とんちんかんな事をしてないでしょうか? (3)ボタンコントロールからこのメソッドを呼び出すにはどのようにすればよろしいのでしょうか? 上記(1)、(2)、(3)をご教授いただけますと大変助かります。 何卒よろしくお願い申し上げます。 ---------------------------------------------------------------------------------- Imports Microsoft.VisualBasic Imports System.ComponentModel Imports System.Data Imports System.Data.Common Imports System.Data.SqlClient Namespace MstTokDataSetTableAdapters Partial Public Class t_MstTokTableAdapter <DataObjectMethod(DataObjectMethodType.Select, False)> _ Public Function GetMstTokDataSet(ByVal SQL As String) As DataSet Dim Setting As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("connectionString") Dim Factory As DbProviderFactory = DbProviderFactories.GetFactory(Setting.ProviderName) Dim DB As DbConnection = Factory.CreateConnection() DB.ConnectionString = Setting.ConnectionString Dim Comm As DbCommand = Factory.CreateCommand() Comm.Connection = DB Comm.CommandText = SQL DB.Open() Return Comm.ExecuteReader(CommandBehavior.CloseConnection)      ここでエラーになってしまいます。例題どおりやってるのですが・・・ End Function End Class End Namespace ----------------------------------------------------------------------------------

  • VBExpressからSQLサーバーへの接続

    VBExpress2010をDLしSQLServercompactをいじろうと思ったのですが、接続がそもそも出来ず詰まってしまいました。 適当にフォームを作ってボタンを配置し、 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim St As String Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim ServerName As String = "C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"     Dim DatabaseName As String = "Northwind" 'データベース St = "Server=""C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples\Northwind.sdf"";" St &= "integrated security=SSPI;" St &= "initial catalog = Northwind" Cn.ConnectionString = St SQL = Cn.CreateCommand SQL.CommandText = "SELECT FirstName FROM Employees" Cn.Open() MsgBox(SQL.ExecuteScalar) Cn.Close() SQL.Dispose() Cn.Dispose() End Sub としました。結構単純な流れだと思うのですがCn.Open()の部分で「sqlexpressionはハンドルされませんでした」とエラーが出ます。 SQL Network Interfaces, error: 26 だそうです。資格情報の有無もなにもデータベースエクスプローラで内部の閲覧は出来るし、パスワードフリーなのでどのセッションが不可なのか見当がつきません。アドバイスよろしくお願い致します。

  • 自分を呼び出すプログラムの書き方

    フォルダ検索のように 計算式1=計算式2+値1 計算式2=値2+値3+値4 ・・・ となるデータの計算結果を算出したいと思っています。 計算式を使用する計算式はレベル+1として 複雑さを数えてあります。 DBから計算式1を検索すると 計算式2と値1のキーが取れます。 すべての値について配列にしたいのですが 途中で前にセットした値が書き換えられてしまいます。 どうしたらよいでしょうか。 Public Class keisan Public iCalcVId As Integer '計算値ID Public iCalcFId As Integer '計算式ID Public iLevel As Integer 'レベル Public strsign As String '符号 Public iRefCalcFid As Integer '参照計算式ID Public iSensorId As Integer '値 End Class Public Class Groupkeisan : Inherits System.Collections.Generic.Dictionary(Of String, keisan) Public Shadows Sub Add(ByVal Item As keisan) MyBase.Add(Item.iCalcVId, Item) End Sub End Class Private Sub AAAA() Dim strSQL As String 'SQL Dim dtCF As DataTable '計算式 Dim strMSG As String 'メッセージ Dim DBConnection As New DBConnection 'コネクション Dim keisandata As New Groupkeisan '請求先IDから最初の計算式IDを検索 strSQL = "SELECT " strSQL &= "計算式ID " strSQL &= ",計算式レベル " strSQL &= "FROM 計算式"   strSQL &= "Where 最高レベル" strSQL &= " Order by 計算式レベル DESC " strMSG = "" dtCF = DBConnection.GetDataTable(strSQL, TblCalcFormula, strMSG) '最高レベルの計算式は1つだけある If dtCF.Rows.Count = 1 Then '計算値を検索 Call BBBB(iDemand, dtCF.Rows(0)("計算式ID"), keisandata) Else Exit Sub End If End Sub Private Sub BBBB(ByRef iCalcId As Integer, ByRef keisandata As Groupkeisan) Dim strSQL As String 'SQL Dim dtCV As DataTable '計算値 Dim strMSG As String 'メッセージ Dim DBConnection As New DBConnection 'コネクション Dim keisandata As New keisan '引数の計算式IDから計算値を検索 strSQL = XXXXXXXXX strMSG = "" dtCV = DBConnection.GetDataTable(strSQL, TblCalcValue, strMSG) For Each Row As DataRow In dtCV.Rows '計算値ID addkeisandata.iCalcVId = Row("計算値ID") '計算式ID addkeisandata.iCalcFId = iCalcId 'レベル addkeisandata.iLevel = Row("計算式レベル") '符号 addkeisandata.strsign = Row("符号") '計算式ID If Row("参照計算式ID").ToString = "" Then addkeisandata.iSensorId = Row("値") Else addkeisandata.iRefCalcFid = Row("参照計算式ID") Call BBBB( Row("参照計算式ID"), keisandata) End If '追加 keisandata.Add(addkeisandata) Next End Sub

  • AccessVBAのCurrentDbメソッドでエラーになります

    Windows2000、Access2000を使っています。 オンラインヘルプを参考に作った下記のプログラムを走らせると、Set db = CurrentDbのところで「実行時エラー13:型が一致しません」のエラーになります。どうしてでしょう。 Sub b() Dim db As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Set db = CurrentDb Set tdf = db.TableDefs("テーブル1") For Each fld In tdf.Fields Debug.Print fld.Name Next fld End Sub 参照設定を見ると、Microsoft dao 3.0 Object LibraryにチェックがついていますのでDAOは使えるはずなんですが・・・。

  • VB2013でVB6でのDBは利用可能?

    VB4.0で作成してましたMicrosoft.Jet.OLEDB.4.0のDBをSQLSERVER2012で作成したDBに移行したいのですが VB2013では読み込めないのでしょうか? データーベースエクスプローラーでは中身の確認はできるのですが プログラムで走らせるとSqlDataAdapter(sql, cnStr)のところでエラー下記[エラー結果]とになります Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\SERVER\DB名.mdb" Dim sql As String sql = "SELECT * FROM テーブル名" Dim dt1 As New DataTable Dim da1 As New SqlDataAdapter(sql, cnStr) Try da1.Fill(dt1) DataGridView1.DataSource = dt1 Catch ex As Exception End Try End Sub [エラー結果] 型 'System.ArgumentException' のハンドルされていない例外が System.Data.dll で発生しました 追加情報:キーワードはサポートされていません : 'provider' 以前のmdbファイルが読み込める方法はないのでしょうか?

専門家に質問してみよう