我已将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和单个数据库连接文件!)
答案 0 :(得分:4)
我现在如何查询和更新此数据源?
不你现在是怎么做的!
该代码存在两个巨大问题:
有零的案例,其中任何一个都是可以接受的。
这可能是它的一种方式:
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是首选(这就是为什么我没有为你提供这个功能:它将依赖于你必须首先使用的其他代码从网上获取)。
当您对用户进行身份验证时,必须使用相同的函数来散列尝试的密码,并比较哈希值而不是原始密码。这是唯一安全的方法。