我遵循了this教程,尝试在C#控制台应用程序中使用Access数据库。
我有2个班级:
class Ac
{
OleDbConnection connection;
OleDbCommand command;
private void ConnectTo()
{
connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.15.0;Data Source=D:\Info\csharp\socket\ef\accesstest\accesstest\bin\Debug\Database.accdb;Persist Security Info=False");
command = connection.CreateCommand();
}
public Ac()
{
ConnectTo();
}
public void Insert(string a, string b)
{
try
{
command.CommandText = "INSERT INTO Persons (nName, nNamee) VALUES (\"" + a + "\", \"" + b + "\");";
command.CommandType = System.Data.CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
}
而且,
namespace accesstest
{
public class MainClass
{
Ac f = new Ac();
public static void Main()
{
f.Insert("ab", "ac");
Console.WriteLine("\n\nPress enter to close...");
Console.ReadLine();
}
}
}
我得到"非静态字段,方法或属性&accessae.MainClass.f'"需要对象引用。 我尝试去除静电,但不能正常工作,比如Main必须静电。
对我有什么想法?谢谢!
答案 0 :(得分:0)
在静态上下文中,您无法在没有对象引用的情况下引用实例变量f。
根据MSDN,Main方法是程序的入口点;它是程序控制开始和结束的地方。
答案 1 :(得分:0)
试试这个:
1)公开“等级Ac”。
2)简单明了
public string whateverFunction()
{
f.Insert("ab", "ac");
return "OK";}
}
3)在其他地方调用MainClass
accesstest.MainClass obj = new accesstest.MainClas();
string result = obj.whateverFunction();
如果可行,请提高代码质量