私が持っているコードのビットに問題があります。呼び出しているメソッド内に変数が詰まっていると思います。そのメソッドを再度実行すると、変数は存在しなくなります。
以下は私のメインの例です:
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}
sqlconnect sql = new sqlconnect();
public string pass;
public string user;
public void button1_Click(object sender, EventArgs e)
{
//Username and password textboxes send to public strings
user = textBox1.Text;
pass = textBox2.Text;
try
{
//try connecting to SQL database using SQL class
sql.GetSqlConnection();
sql.myConnection.Open();
this.Hide();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
SQL接続クラスは次のとおりです。
namespace NHS_Workshop_System
{
public class sqlconnect
{
public SqlConnection myConnection { get; set; }
Settings1 set = new Settings1();
Login var = new Login();
public SqlConnection GetSqlConnection()
{
if (myConnection == null)
myConnection = new SqlConnection("user id="+(var.user)+"; password="+(var.pass)+";server="+(set.SelectServer)+";Trusted_Connection="+(set.SelectContype)+";database="+(set.SelectDataBase)+"; connection timeout="+(set.Condrop)+"");
return myConnection;
}
}
}
したがって、ログインしようとすると最初は機能する可能性がありますが、別のフォームでそのメソッドを実行しようとすると、ユーザー名とパスワードが欠落しています。メソッドを実行するたびに必ずそれらの詳細を呼び出すように、変数をグローバルにする方法がわかりません。したがって、2回目に別のフォームでsqlconnectionを使用すると、exメッセージにユーザー名とパスワードが存在しないことが示されます。これはスコーピングの問題ですか?そうであれば、誰かがこれをどのように行うかについて光を当てることができますか?SQLサーバーにアクセスするための新しい方法かもしれませんか?髪を引き裂いてくれてありがとう