【发布时间】:2014-02-20 04:11:39
【问题描述】:
我有两种方法,在 ConnecttoDB 方法中我创建了一个名为 connection 的对象,但我需要在第二种方法中使用该对象来指定 SQLiteCommand。我怎样才能知道该对象在 InsertField 方法中可用?
public class Database
{
private static string _datasource;
private static string _table;
private static string _field;
private static string _values;
public static void ConnecttoDB(string datasource)
{
_datasource = datasource;
SQLiteConnection connection = new SQLiteConnection();
connection.ConnectionString = "Data Source: " + _datasource;
connection.Open();
}
public static void InsertField(string table, string field, string values)
{
SQLiteCommand command = new SQLiteCommand(/*connection*/);
_table = table;
_field = field;
_values = values;
String.Format("INSERT INTO {0} {1} VALUES{2}", _table, _field, _values);
}
}
【问题讨论】:
-
你必须以某种方式暴露对象。要么使其成为类的属性/字段,要么将其传递给方法。我建议使用某种 ORM 而不是滚动您自己的数据访问。
-
为什么你有一个字符串表示的静态字段?您可以改为将其设为 SQLiteConnection 字段。我个人不会一开始就使用这种设计,但这是一种不同的方法。 (我不会有字段/表/值的静态变量,也不会使用字符串格式将值嵌入 SQL。改用参数化 SQL!)
-
在这种特殊情况下,您实际上不应该拥有两种方法。创建数据库连接对象应该在使用它的方法中进行,并且应该在
using块内完成,以便在操作完成时将其释放。 -
@PhilVallone:当然——虽然我可能一开始不会在 Web 环境中使用 SQLite :)
-
@user2684089:对。无论如何,我仍然会使用“根据需要打开和关闭”模型。