【问题标题】:How To Query A VB.NET Datasource如何查询 VB.NET 数据源
【发布时间】:2011-11-21 06:31:49
【问题描述】:

我已将 Datasoruce 添加到我当前的项目中,并且以下内容已添加到我的 App.config 文件中:

<connectionStrings>
        <add name="WindowsApplication1.My.MySettings.dbConnectionString"
            connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>

我现在如何查询和更新这个数据源?

我有以下疑问:

Dim sqlstr As String = "INSERT INTO Accounts(Username,Password)VALUES('" & Trim(Account(0)) & "','" & Trim(Account(1)) & "')"

但我不太确定如何实际运行查询(VB 新手,习惯 PHP 和单个数据库连接文件!)

【问题讨论】:

    标签: sql vb.net visual-studio visual-studio-2010 ms-access


    【解决方案1】:

    我现在如何查询和更新这个数据源?

    你现在是怎么做的!

    该代码有两个巨大问题:

    1. 切勿使用字符串连接将值插入到这样的 sql 语句中。
    2. 切勿将密码以纯文本形式存储在数据库中。

    其中任何一个都可以接受的情况为零。

    下面是它可能看起来的一种方式:

    Dim sql As String = "INSERT INTO Account (UserName, PasswordHash) VALUES ( ? , ? )"
    Using cn As New OleDbConnection(ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString), _
          cmd As New OleDbCommand(sql, cn)
    
        cmd.Parameters.Add("UserName", OleDbType.VarChar, 50).Value = Account(0).ToString().Trim()
        cmd.Parameters.Add("PasswordHash", OleDbType.Char, 20).Value = HashPassword(Account(1).ToString().Trim())
    
        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
    

    请注意,我更改了您的一个列的名称,并且我引用了一个尚不存在的 HashPassword() 函数。您需要构建自己的 HashPassword() 函数以使用该代码。构建函数时,寻找要使用的 scrypt 或 bcrypt 函数。不要使用 MD5。 .Net 内置的最好的是 SHA1。如果你真的必须走那条路 (SHA1) 你可以,但 scrypt 或 bcrypt 是首选(这就是我不为你提供该功能的原因:它将依赖于你必须首先使用的其他代码从网上获取)。

    当您对用户进行身份验证时,您必须使用相同的函数对尝试的密码进行哈希处理,并比较哈希值而不是原始密码。这是唯一安全的方法。

    【讨论】:

    • 非常感谢您的帮助。该软件本身连接到我的服务器以对用户进行身份验证,这是我在学习 VB 时制作的一个简单应用程序。在将数据发送到服务器之前,它是 MD5 加密的,以便与我的在线数据库中的密码进行比较(也是 MD5 加密的)。一段时间后一切正常,遇到类型不匹配的问题,并在数据库的附加条目上将 OleDbType.Char 更改为 OleDbType.Integer。另外, , 50 / , 20 与插入语句有什么关系?对插入的字符有限制吗?非常感谢:)
    • 50 和 20 是对列大小的猜测,应更改以匹配实际列。您应该使用 md5 来散列您的密码。它很容易破解。此外,哈希!= 加密。
    • 这里的“dbConnectionString”是什么?
    • @MdAshrafulIslam 这是 web.config 文件中列出的连接字符串的名称。
    • @JoelCoehoom 哦!我将它与 Windows 应用程序一起使用。尽管我以不同的方式解决了我的问题。谢谢
    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多