我试图通过让程序连接到服务器来在c#中创建一个SQL数据库.我在创建登录屏幕时遇到问题.问题是为了创建登录屏幕.我试图将2个字符串传递给连接类,因为语句是静态的,所以我无法这样做?
public class sqlconnect
{
public String us;
public String pas;
public SqlConnection myConnection = new SqlConnection("user id=" + (us) + ";" +
"password=" + (pas) + ";server=PANDORA;" +
"Trusted_Connection=yes;" +
"database=NHS; " +
"connection timeout=30");
}
Run Code Online (Sandbox Code Playgroud)
ERROR - A field initializer cannot reference the non-static field, method, or property
Run Code Online (Sandbox Code Playgroud)
如果我尝试将"我们"或"过时"设为静态,我无法将主要课程的信息传递给此课程.如果有人能指出我做错了什么,我会感激不尽,因为我不是C#的专家,我必须承认.谢谢.
您不能在字段初始值设定项中使用变量.这里一个很好的选择是创建myConnection一个属性或(更好的是,在这种情况下)一个方法:
public SqlConnection CreateConnection()
{
return new SqlConnection("user id=" + us + ";" +
"password=" + pas + ";server=PANDORA;" +
"Trusted_Connection=yes;" +
"database=NHS; " +
"connection timeout=30");
}
Run Code Online (Sandbox Code Playgroud)
这允许您使用其他变量(状态)来创建所需的值.
我还建议将字符串值更改为属性,使用构造函数初始化属性,并使用更好的名称.另一种方法是让用户名和密码成为方法的参数,即:
public SqlConnection CreateConnection(string username, string password)
{
return new SqlConnection("user id=" + username + ";" +
"password=" + password + ";server=PANDORA;" +
"Trusted_Connection=yes;" +
"database=NHS; " +
"connection timeout=30");
}
Run Code Online (Sandbox Code Playgroud)
这将消除将这些作为状态存储在您的类中的需要(除非它们被其他例程使用).