将新值从 form1 传递到 form2,该值位于数据库的同一记录上
pass new value from form1 to form2 which was on the same record from the database
我是初学者。
我刚刚为 Library App 创建了一个登录表单。
我的登录表单包括 ID、密码和登录按钮。
这是我的登录按钮脚本。
string userid1 = userid.Text;
string password1 = userpwd.Text;
SqlCommand cmd = new SqlCommand("select id_user,pwd_user from tb_user where id_user='" + userid.Text + "'and pwd_user='" + userpwd.Text + "'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2();
this.Hide();
myForm.Show();
}
my login table 在数据库中的属性是:id, pass, and name。
有人可以告诉我或指导我如何在我登录表单 2 后将 id 值传递给 name 值吗?
我通常为 From2 做 2 个构造函数,在这种情况下设置 data/user 方法:
public Form2()
{
InitializeComponent();
}
public Form2(string id, string name /* other arguments */) : this()
{
SetUser(id, name);
}
public void SetUser(string id, string name /* other arguments */)
{
this.Text = $"user logged: {name} ({id})";
//do stuff
}
并像那样调用它(在您的代码中):
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2(id, name /* other arguments */);
//or:
//myForm = new Form2();
//myForm.SetUser(id, name);
this.Hide();
myForm.Show();
}
顺便说一句:在用户 table 中存储纯文本密码不是一个好主意。
btw2:对于查询,使用参数也是一种很好的做法,而不是从粘在一起的字符串构建查询,请在此处查看:https://msdn.microsoft.com/pl-pl/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
另一种方法,
在 Form2 中创建 public 属性,例如,
public partial class Form2 : Form
{
public string UserId { get; set; }
public string UserName { get; set; }
public Form2()
{
InitializeComponent();
}
}
并从 Form1 访问它们
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2();
var row = dt.Rows[0];
myForm.UserId = Convert.ToString(row["id_user"]);
myForm.UserName = Convert.ToString(row["name_user"])
this.Hide();
myForm.Show();
}
我是初学者。 我刚刚为 Library App 创建了一个登录表单。
我的登录表单包括 ID、密码和登录按钮。 这是我的登录按钮脚本。
string userid1 = userid.Text;
string password1 = userpwd.Text;
SqlCommand cmd = new SqlCommand("select id_user,pwd_user from tb_user where id_user='" + userid.Text + "'and pwd_user='" + userpwd.Text + "'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2();
this.Hide();
myForm.Show();
}
my login table 在数据库中的属性是:id, pass, and name。 有人可以告诉我或指导我如何在我登录表单 2 后将 id 值传递给 name 值吗?
我通常为 From2 做 2 个构造函数,在这种情况下设置 data/user 方法:
public Form2()
{
InitializeComponent();
}
public Form2(string id, string name /* other arguments */) : this()
{
SetUser(id, name);
}
public void SetUser(string id, string name /* other arguments */)
{
this.Text = $"user logged: {name} ({id})";
//do stuff
}
并像那样调用它(在您的代码中):
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2(id, name /* other arguments */);
//or:
//myForm = new Form2();
//myForm.SetUser(id, name);
this.Hide();
myForm.Show();
}
顺便说一句:在用户 table 中存储纯文本密码不是一个好主意。 btw2:对于查询,使用参数也是一种很好的做法,而不是从粘在一起的字符串构建查询,请在此处查看:https://msdn.microsoft.com/pl-pl/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
另一种方法,
在 Form2 中创建 public 属性,例如,
public partial class Form2 : Form
{
public string UserId { get; set; }
public string UserName { get; set; }
public Form2()
{
InitializeComponent();
}
}
并从 Form1 访问它们
if (dt.Rows.Count > 0)
{
MessageBox.Show("Login success!");
var myForm = new Form2();
var row = dt.Rows[0];
myForm.UserId = Convert.ToString(row["id_user"]);
myForm.UserName = Convert.ToString(row["name_user"])
this.Hide();
myForm.Show();
}