2011-08-06 11 views
0

VBソリューションでは、請求書システムを実装しようとするダースフォームがあります。VB 2008複数フォームでのMsAccess接続

私のメインフォーム(Form1と言う)には、顧客を作成、編集、または削除する設計しかありません。 [作成]ボタンをクリックすると、フォーム2が開きます。フォーム2では、ユーザーが顧客の詳細を入力してSAVEをクリックすることができるテキストボックスがあります。私の疑問はここにあります....

フォーム2のこのSAVEボタンをクリックすると、私はすでに作成したMSAccessのデータベーステーブル(このテーブルには何もありません)にINSERTコマンドを実行します。今のレコード)。

私のフォーム1では、MSAccessデータベースに接続文字列を追加しました。私のForm1のコードでは、私は自分のフォーム2では、この

Public Class Form1 

     'Code specific to Form1's elements 

End Class 

Public Class Connection 
    Private Shared connection As OleDb.OleDbConnection 

    Public Shared ReadOnly Property Instance() As OleDb.OleDbConnection 
     Get 
      If connection Is Nothing Then 
       connection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Invoice.mdb") 
      End If 
      Return connection 
     End Get 
    End Property 
End Class 

のようなコードを持って、私はこのようないくつかのコードを持っている... SAVEが

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

     Dim myConnection As OleDb.OleDbConnection 
     myConnection = Connection.Instance 

    End Sub 

をクリックされたとき、私は、このリンクからコードのこの部分を得ました[1]:vb.net - sharing mdb access connection among multiple forms

これで、私のテキストボックスからCustomerテーブルのフィールドにレコードを挿入するのに、もっと多くのコードが必要なのか分かりません。誰でも助けてくれますか?

答えて

1

接続が完了したら、Accessテーブルに通常の挿入を行うことができます。 SQLの文字列で挿入するのか、ストアドプロシージャで挿入するのかは指定していません。わかりやすくするために私の例では前者を使用していますが、はSQLインジェクション攻撃を防ぐためにパラメータ化されたクエリ(SQLの文字列を実行している場合)またはストアドプロシージャのいずれかを強く推奨しています。

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

    Try 

     Dim myConnection As OleDb.OleDbConnection = Connection.Instance 

     myConnection.Open() 

     Dim sqlString As String = "" ' Put your insert SQL here 
     Dim myCommand As New OleDbCommand(sqlString, myConnection) 

     Dim rows As Integer = myCommand.ExecuteNonQuery 
    Catch ex As Exception 
     // Handle any errors here 
    Finally 
     myConnection.Close() 
    End Try 

End Sub