如果我的標題令人困惑,但我不知道如何以不同方式表達我的問題。我有2個類,都是Windows窗體;其中一個是登錄界面,另一個是商店界面,如果用戶的登錄有效,則該用戶被帶到該界面。現在,我試圖將用戶名和密碼傳遞給商店界面類,以便從數據庫中正確的行中減去「購買」,但由於某種原因,這不起作用。我已經通過代碼直接傳遞有效的用戶名和密碼字符串來測試我的方法,如果我這樣做,該方法工作正常。調試模式也顯示用戶名和密碼的值不通過get方法傳遞給商店接口類。希望你能幫助,在此先感謝和抱歉的文字:)即使使用get/set方法,Int值也不會與對象一起傳遞
這裏的相當大的塊是有問題的兩個班,再加上我使用數據庫的方法的類:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ShopshopFinalfinal
{
public partial class LoginInterface : Form
{
DatabaseConnection dbConnection = new DatabaseConnection();
private ShopInterface shop1Interface;
private RegisterInterface reg1Interface;
private string _username;
private string _password;
public void SetUsername(string username)
{
_username = username;
}
public void SetPassword(string password)
{
_password = password;
}
public string GetUsername()
{
return _username;
}
public string GetPassword()
{
return _password;
}
public LoginInterface()
{
InitializeComponent();
txt_password.PasswordChar = '*';
}
private void btn_login_Click(object sender, EventArgs e)
{
if (dbConnection.CheckUsername(txt_username.Text) == 1 && dbConnection.CheckPassword(txt_password.Text) == 1)
{
SetUsername(txt_username.Text);
SetPassword(txt_password.Text);
//txt_username.Clear();
//txt_password.Clear();
shop1Interface = new ShopInterface();
shop1Interface.Show();
}
}
private void btn_register_Click(object sender, EventArgs e)
{
reg1Interface = new RegisterInterface();
reg1Interface.Show();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ShopshopFinalfinal
{
public partial class ShopInterface : Form
{
private DatabaseConnection dbConnection = new DatabaseConnection();
private LoginInterface login = new LoginInterface();
public ShopInterface()
{
InitializeComponent();
}
private void btn_buyapple_Click(object sender, EventArgs e)
{
//string username = login.GetUsername();
//string password = login.GetPassword();
dbConnection.Transaction(login.GetUsername(), login.GetPassword(), 10);
}
}
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ShopshopFinalfinal
{
class DatabaseConnection
{
private SqlConnection conn;
private SqlDataReader rdr;
private SqlCommand cmd;
public DatabaseConnection()
{
conn = new SqlConnection(Properties.Settings.Default.connectionstring);
}
public int CheckUsername(string username)
{
int result = 0;
//Opret den ønskede SQL kommmando - her tjekker den om username fra textboxen er lig en i User table.
cmd = new SqlCommand("select * from dbo.Users where Username ='" + username + "'", conn);
//Åbn forbindelsen til databasen.
conn.Open();
//Udfører det ønskede SQL statement på databasen.
rdr = cmd.ExecuteReader();
//Tjek om den har læst og om det er rigtigt.
if (rdr.Read())
{
result = 1;
}
else
{
result = 0;
}
//Luk forbindelsen til databasen.
conn.Close();
return result;
}
public int CheckPassword(string password)
{
int result = 0;
//Opret SQL-kommando - tjek om password fra textbox er lig med et i databasen.
cmd = new SqlCommand("select * from dbo.Users where Password ='" + password + "'", conn);
//Åben forbindelsen.
conn.Open();
//Udfør det ønskede SQL statement på databasen.
rdr = cmd.ExecuteReader();
if (rdr.Read())
{
result = 1;
}
else
{
result = 0;
}
conn.Close();
return result;
}
public void RegisterUser(string username, string password)
{
conn.Open();
cmd =
new SqlCommand("insert into dbo.Users (Username, Password, IsAdmin, Balance) values ('" +
username +
"', '" + password + "', '0', '0')", conn);
rdr = cmd.ExecuteReader();
rdr.Close();
conn.Close();
}
public void Transaction(string username, string password, int price)
{
conn.Open();
cmd = new SqlCommand("update dbo.Users set Balance = Balance - " + price + " where Username = '"+username+"' and Password = '"+password+"'", conn);
rdr = cmd.ExecuteReader();
rdr.Close();
conn.Close();
}
}
}
在表單之間傳遞數據時,您必須使用表單的一個實例。看到我的兩個表單項目的例子:http://stackoverflow.com/questions/34975508/reach-control-from-another-page-asp-net – jdweng
感謝隊友,完美的作品:) – sunero4