0

Web Developer 2010、ASP.NETとVB.NETプログラミング言語およびMS-Accessデータベース(.mdb)を使用しています。

私がやりたいのは、Username = _ ___であるUserというテーブル(つまり、すべての列)からすべてのデータを取得し、フィールドの値をテキストボックスに入力して、編集できるようにすることです。これは、「マイアカウント」ページを作成して、Webサイトを表示しているユーザーが自分のアドレスやパスワードなどを変更できるようにするためのものです。

特定のユーザー名ごとにフィールドからデータを取得するのに行き詰まっています。

私がこれまでに行ったことはこれですが、機能しません:

Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Data

Partial Class Account
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load


        Dim tUsername As String = Session("Username")
        Dim tPassword As String = Session("Password")

        Dim conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\PetLandia\App_Data\db.mdb")
        Dim cmd As OleDbCommand = New OleDbCommand("SELECT [Email], [CustomerName], [CustomerSurname], [Address], [Country], [TelNo], [Username], [Password] FROM [User] WHERE Username=?", conn)

        DataSet(dst = New DataSet)

        cmd.Parameters.AddWithValue("@Username", tUsername)

        conn.Open()

        Dim reader As OleDbDataReader = cmd.ExecuteReader

        If (reader.Read()) Then

            lblName.Text = reader.GetValue(4).ToString
            lblSurname.Text = reader.GetValue(5).ToString
            lblUsername.Text = reader.GetValue(9).ToString
            txtAddress.Text = reader.GetValue(6).ToString
            txtCountry.Text = reader.GetValue(7).ToString
            txtEmail.Text = reader.GetValue(2).ToString

            conn.Close()

        End If





    End Sub


End Class

エラーメッセージ:

Parameter ?_1 has no default value. 

Dim reader As OleDbDataReader = cmd.ExecuteReader

何か助けはありますか?

4

2 に答える 2

3

@Usernameあなたは好きではないようにパラメータを与える必要があります?

 Dim cmd As OleDbCommand = New OleDbCommand("SELECT [Email], [CustomerName], [CustomerSurname], [Address], [Country], [TelNo], [Username], [Password] FROM [User] WHERE Username=@Username", conn)

Using以下のように接続を扱う場合はステートメントを使用してください

Dim queryString As String = "SELECT OrderID, CustomerID FROM Orders"
Using connection As New OleDbConnection(connectionString)
    Dim command As New OleDbCommand(queryString, connection)

    connection.Open()

    Dim reader As OleDbDataReader = command.ExecuteReader()
    While reader.Read()
        Console.WriteLine(reader.GetInt32(0).ToString() + ", " _
           + reader.GetString(1))
    End While

    ' always call Close when done reading.
    reader.Close()
End Using

また、reader.GetValue(Index)インデックスが常に選択した列数よりも少ないことを確認してください。

于 2012-05-08T18:41:07.597 に答える
0

インデックス番号がクエリステートメントと一致していません。

試す

        lblName.Text = reader.GetValue(2).ToString 
        lblSurname.Text = reader.GetValue(3).ToString 
        lblUsername.Text = reader.GetValue(7).ToString 
        txtAddress.Text = reader.GetValue(4).ToString 
        txtCountry.Text = reader.GetValue(5).ToString 
        txtEmail.Text = reader.GetValue(0).ToString 
于 2012-05-08T18:29:07.980 に答える