我有一个包含ID用户名和密码的表。 我目前有一个wpf表单,它要求用户输入用户名和密码,并且该用户是否可以在表中登录,因此该人可以登录。登录后,它将引导他们进入另一个表和表单,可以在其中添加数据。
我的问题是如何获取所用登录信息的pk并将其添加到下一张表格的表中?
编辑:在第二个表上,我已经有一个专用于用户名和密码表pk的列 编辑2:
存储登录信息的表如下
ID - username - password
1 - ish - 1234
2 - tom - abc
3 - jeff - qwerty
etc
我希望能够通过两本教科书登录时检索ID
例如,如果我键入“ tom”,然后键入“ abc”,则我的ID应该为2
答案 0 :(得分:0)
您将获得他们登录时使用的ID,并将其传递给另一种形式:
import openpyxl
from openpyxl import load_workbook
file = "test.xlsx"
#load the work book
wb_obj = load_workbook(filename = file)
wsheet = wb_obj['test']
#dictionary to store data
dataDict = {}
value = []
row_count = wsheet.max_row
col_count = wsheet.max_column
# loop to get row and column values
for i in range(2, row_count+1):
for j in range(i, col_count+1):
key = wsheet.cell(row=i, column=1).value
print (key)
value.append(wsheet.cell(row=i, column=j).value)
print (value)
dataDict[key] = value
#prompt user for input
userInput = input("Please enter an id to find a person's details: ")
print (dataDict.get(int(userInput)))
在第二种形式中,您应该具有以下属性:
using(Sqlconnection con = new SqlConnection(constr))
{
using(SqlCommand cmd = new SqlCommand("select id from Users where username = @username and password = @password", con)
{
cmd.Paramters.Add("@username", SqlDbType.VarChar).Value = username;
cmd.Paramters.Add("@password", SqlDbType.VarChar).Value = password;
con.Open();
string result = (string)cmd.ExecuteScalar();
if(result!=null)
{
int id = int.Parse(result);
SecondForm frm = new SecondForm();
frm.UserId = id;
frm.Show();
}
else
{
//tell the user that credentials are not valid
}
}
}
答案 1 :(得分:0)
在这种情况下,最好编写一个存储过程,该过程使用用户名和密码,并在有效时返回主键,否则返回-1。从代码中调用SP,如果返回值大于0,则它是主键。
如何将此ID传递到下一个表单取决于您使用的技术。可以将其作为查询字符串传递,但不建议将其传递为表单字段, 会话变量等
尽管如此,该设计仍有很多改进的余地。但是最好遵循
之类的一些基本方法在第二个表中,存储第一个表的主键(id)的列应该是引用第一个表的主键的外键。从技术上讲,它不一定是外键,但这是最佳方法。
另一建议是将密码存储为散列而不是直接文本。用盐哈希更安全。