我刚刚学习VB编程,最近与ORACLE9i相连编一个登陆界面。ORACLE中的表为USERINF,建在LEMONSHINE用户下,里面依次是列USERNAME,PASSWORD。编了登陆界面,编译通过,但是总说密码错误,请高手帮我看看程序有何错误?谢谢谢谢Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Data.oracleClient
Imports System.Collections
Imports System.ComponentModel
Public Class FormLogin
    Inherits System.Windows.Forms.Form
    
       Private Sub btnlogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlogin.Click
        
            If Trim(getpsw()) = Trim(Me.Txtpwd.Text) Then     ,Me.Txtpwd.Text为密码输入框                FormInqrSinf.Show()            Else
                MsgBox("密码错误,请重新输入!")
            End If
    End Sub‘连接函数,用于从数据库中获取选定用户的密码,并与输入密码进行比较Private Function getpsw()
        Dim searchsql As String
        Dim cmd As OracleCommand
        Dim dr As OracleDataReader
        Dim myconn As New OracleConnection
        Dim connectionstring As New String("Data Source=zqy;User ID=system;Password=system123")        searchsql = "SELECT * FROM LEMONSHINE.USERINF WHERE USERNAME='" & Txtuser.Text & " '"'Txtuser.Text 为用户名输入框
        Try
            myconn.ConnectionString = connectionstring
            myconn.Open()
            cmd = New OracleCommand(searchsql, myconn)
            dr = cmd.ExecuteReader()
            Do While dr.Read()                Return Trim(dr.GetString(1))            Loop        Catch ex As Exception
            MsgBox(ex.Message)        End Try
    End Function
End Class

解决方案 »

  1.   

    searchsql = "SELECT * FROM LEMONSHINE.USERINF WHERE USERNAME='" & Txtuser.Text & " '" 
    这个sql选出来应该有很多列吧,改成只select密码那列应该就可以了
      

  2.   

    前面好像乱掉了。重新编一下
    Imports System.Data 
    Imports System.Data.OleDb 
    Imports System.Data.SqlClient 
    Imports System.Data.oracleClient 
    Imports System.Collections 
    Imports System.ComponentModel 
    Public Class FormLogin 
        Inherits System.Windows.Forms.Form 
        
          Private Sub btnlogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlogin.Click 
            
                If Trim(getpsw()) = Trim(Me.Txtpwd.Text) Then    ,Me.Txtpwd.Text为密码输入框   
                  
                       FormInqrSinf.Show()             Else 
                    MsgBox("密码错误,请重新输入!") 
                End If 
        End Sub ‘连接函数,用于从数据库中获取选定用户的密码,并与输入密码进行比较
    Private Function getpsw() 
            Dim searchsql As String 
            Dim cmd As OracleCommand 
            Dim dr As OracleDataReader 
            Dim myconn As New OracleConnection 
            Dim connectionstring As New String("Data Source=zqy;User ID=system;Password=system123")         searchsql = "SELECT * FROM LEMONSHINE.USERINF WHERE USERNAME='" & Txtuser.Text & " '" 'Txtuser.Text 为用户名输入框 
            
            Try 
                myconn.ConnectionString = connectionstring 
                myconn.Open() 
                cmd = New OracleCommand(searchsql, myconn) 
                dr = cmd.ExecuteReader() 
                Do While dr.Read()                 Return Trim(dr.GetString(1))             Loop         Catch ex As Exception 
                MsgBox(ex.Message)         End Try 
        End Function 
    End Class
      

  3.   

    但是后面   Return Trim(dr.GetString(1)) 返回的是密码列啊
      

  4.   

    那个不太懂,你把return的值message出来看下是不是你想要的
      

  5.   

    用MSGBOX查看,数据库里查出的密码是空值,所以我不知道是怎么回事了,输入的密码和用户名是正确的啊
      

  6.   

    oracle 中的语句这么写~ 查张三的密码
    SELECT PASSWORD FROM USERINF WHERE USERNAME=‘张三’;
      

  7.   

    我把查询语句直接改成searchsql = "SELECT password FROM LEMONSHINE.USERINF WHERE USERNAME='sys '" 
    这样还是不行,是不是连接的问题啊。可是我用这个连接编了另一个界面可以把数据源导进来的啊
      

  8.   

    虽然不知道什么意思,但我感觉是下面这段的问题
    Do While dr.Read() 
     Return Trim(dr.GetString(1)) 
    Loop 
      

  9.   

    vb.net我懂得不多,我只是感觉那个循环是不是循环过了,所以返回了个空值
      

  10.   

    终于找出错误了,因为PASSWORD是保留关键字,用它建列名无效的。返回语句没有错。还是谢谢大家