2011-12-29 10 views
1

私の質問が単純ならば謝りますが、インターネットで多くの調査を行い、解決策を見つけるのが難しいです。Visual Studioでオブジェクトを使用してSQLステートメントを実行する

Visual Studioに接続されているデータベースがあり、「データベースに接続...」ウィザードを使用して接続を確立しました。 Visual Studioのサーバーエクスプローラーで、 "newreptDBtest.accdb"という名前のデータ接続と、Mandrewという名前のサーバーがあります。

ボタンをクリックすると、基本的にこのデータベースでSQL文を実行します。だから私は、フォーム上のボタンを持って、それが次のコードがあります:一般宣言で

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim sqlconn As New SqlConnection 
    sqlconn.ConnectionString = "server=Mandrew;Initial Catalog=newreptDBtest.accdb" 
    Try 
     sqlconn.Open() 
    Catch ex As Exception 
     MessageBox.Show("Error on connection") 
    End Try 
    If sqlconn.State = 1 Then 
     MessageBox.Show("Success!") 
    End If 
End Sub 

を、私が持っている:おそらく

Imports System.Data.SqlClient 

それがSQLデータベースではありませんので、?よく分かりません。いずれにせよ、私は "成功"を達成することができませんでした。 MessageBoxから。いったん取得すれば、特定の行や単一の情報を返すSQL文を作成する方法を理解できます。 newreptDBtest、私はnewreptと呼ばれるにクエリを実行することがしたいのですが、データベースへの接続文字列がある表で

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Andrew\Documents\newreptDBtest.accdb" 

TL; DR:

どのように私はプロジェクトに既に接続されているデータベース内のテーブルに対してSQLクエリーを実行するためにオブジェクト(ボタンなど)を使用しますか?事前に

おかげで、 SuperXero

答えて

1

あなたはMS Accessデータベースファイルにアクセスするために使用する必要があるクラスがSystem.Data.OleDb namespaceです。このお試しください:明らかhere

から撮影

Dim ConnString As String = "server=Mandrew;Initial Catalog=newreptDBtest.accdb" 
Dim SqlString As String = "put your query here, e.g. Select * From Contacts" 
Using conn As New OleDbConnection(ConnString) 
Using cmd As New OleDbCommand(SqlString, conn) 
cmd.CommandType = CommandType.Text 
conn.Open() 
Using reader As OleDbDataReader = cmd.ExecuteReader() 
    While reader.Read() 
    'access the data using the reader, e.g. reader("ColumnName") 
    End While 
End Using 
End Using 
End Using 

を、あなたはあなたのクエリに合わせて、それを修正する必要がありますが、これはあなたがMS Accessファイルに接続するためにOleDbConnectionを使用する必要があるという事実をhightlights。

+0

プロバイダを含めるように名前空間をインポートし、ConnStringを変更する必要があったため、追加しました: Provider = SQLOLEDB; server = ... しかし、conn.Open( " )行...任意のアイデアなぜですか? – SuperXero

+0

接続文字列にユーザー名とパスワードを指定する必要があります。これには、uid = Username; pwd = password;接続文字列の詳細については、http://www.sqlstrings.com/MS-Access-connection-strings.htmを参照してください。注意、私はAccessデータベースのSQLOLEDBプロバイダを使用できるとは思わない。 –

+0

さて、私はプロバイダについて気づいた。これで接続文字列が次のように変更されました: 'Dim ConnString As String =" Provider = Microsoft.ACE.OLEDB.12.0; server = Mandrew;データソース= 'C:\ Users \ Andrew \ Documents \ newreptDBtest.accdb' エラーが表示されます。「インストール可能なISAMを見つけることができませんでした」そして、奇妙なことに、 "server = Mandrew;"コードをエラーなく実行できるようにします。私は 'While reader.Read()'ループで何かをするように設定していませんが、エラーは出ませんでした。 – SuperXero

関連する問題