none
vb.net数据库问题 RRS feed

  • 问题

  • Public Class Form1

        Dim objComm As New OleDbCommand()

        Dim adapter As New OleDbDataAdapter(objComm)

        Dim tbl As New DataTable

        Dim ds As DataSet

     

        Private Sub Form16_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            conn()

        End Sub

     

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

            checkConn()

            strSql = "SELECT * FROM Login WHERE Username= '" & TextBox1.Text & "'"

            rec1.Open(strSql, Con, ADODB.CursorTypeEnum.adOpenStatic)

            If rec1.Fields("Username").Value = TextBox1.Text Then

                Label1.Text = rec1.Fields("Password").Value

            End If

     

        End Sub

    End Class

     

    1.在Login的table,有username,password,level的field.当我输入张三,就会显示1234(张三的password)。

    当我换成 Label1.Text = rec1.Fields("level").Value时,就出现错误“Item cannot be found in the collection corresponding to the requested name or ordinal.”。在数据库确实有资料在level的field.我有写错代码吗?

    2010年9月29日 9:07

答案

  • 你好

    或者你可以嘗試使用DATAADAPTER + DATATABLE 來取 資料

    E.G.

      Dim objComm As New OleDbCommand()
            objComm.CommandText =  "SELECT * FROM Login WHERE Username= '" & TextBox1.Text & "'" ' 這是一個QUERY STRING 來選取資料的
            objComm.Connection = objCon
            Dim adapter As New OleDbDataAdapter(objComm) '選取資料後可以用OleDbDataAdapter 把資料存到DATATABLE 裡
            Dim tbl As New DataTable ' 用來存資料, 等一會可以顯示到DATAGRIDVIEW中

            Try
                objCon.Open() ' 開啟 ACCESS CONNECTION
                adapter.Fill(tbl) ' 把資料存到DATATABLE 裡  '和ADODB RECORDSET 的 概念可能是差不多的
           
    if tbl.rows.count>0 then '去看看上面的QUERY 能不能找到資料
        if tbl.rows(0)("Username") = TextBox1.Text Then '看看 SALESNO 的內容和TEXT1.TEXT 同不同

            Label1.Text = tbl.rows(0)("level")

          end if

    end if


            Catch ex As Exception
                MsgBox(ex.Message) '有問題ERROR 時 POP UP ERROR MESSAGE BOX
            Finally
                adapter = Nothing '清理 data adapter object
                objComm = Nothing '清理 command object
                objCon.Close()  '關掉連線
                objCon = Nothing '清理 connection object
            End Try
        End Sub

    如果出錯時..可以嘗試看看 DATATABLE 上有沒有level 這一個FIELD

    Please correct me if my concept is wrong

     


    Chi
    • 已标记为答案 ckjason 2010年10月2日 9:54
    2010年9月29日 11:21
    版主

全部回复

  • 你好

    或者你可以嘗試使用DATAADAPTER + DATATABLE 來取 資料

    E.G.

      Dim objComm As New OleDbCommand()
            objComm.CommandText =  "SELECT * FROM Login WHERE Username= '" & TextBox1.Text & "'" ' 這是一個QUERY STRING 來選取資料的
            objComm.Connection = objCon
            Dim adapter As New OleDbDataAdapter(objComm) '選取資料後可以用OleDbDataAdapter 把資料存到DATATABLE 裡
            Dim tbl As New DataTable ' 用來存資料, 等一會可以顯示到DATAGRIDVIEW中

            Try
                objCon.Open() ' 開啟 ACCESS CONNECTION
                adapter.Fill(tbl) ' 把資料存到DATATABLE 裡  '和ADODB RECORDSET 的 概念可能是差不多的
           
    if tbl.rows.count>0 then '去看看上面的QUERY 能不能找到資料
        if tbl.rows(0)("Username") = TextBox1.Text Then '看看 SALESNO 的內容和TEXT1.TEXT 同不同

            Label1.Text = tbl.rows(0)("level")

          end if

    end if


            Catch ex As Exception
                MsgBox(ex.Message) '有問題ERROR 時 POP UP ERROR MESSAGE BOX
            Finally
                adapter = Nothing '清理 data adapter object
                objComm = Nothing '清理 command object
                objCon.Close()  '關掉連線
                objCon = Nothing '清理 connection object
            End Try
        End Sub

    如果出錯時..可以嘗試看看 DATATABLE 上有沒有level 這一個FIELD

    Please correct me if my concept is wrong

     


    Chi
    • 已标记为答案 ckjason 2010年10月2日 9:54
    2010年9月29日 11:21
    版主
  • strSql = "SELECT username,password,level FROM Login WHERE Username= '" & TextBox1.Text & "'"

            rec1.Open(strSql, Con, ADODB.CursorTypeEnum.adOpenStatic)

            If rec1.Fields("Username").Value = TextBox1.Text Then

                Label1.Text = rec1.Fields(2).Value

            End If


    http://feiyun0112.cnblogs.com/
    2010年9月30日 1:10
    版主