我们可以在查询中使用变量作为表名吗?

时间:2013-05-04 17:37:57

标签: c# mysql winforms

在代码中,我试图从数据库中检索信息并将其存储在表中。在查询中我使用了一个变量来指定一个表,我这样做是因为我想使用这一段代码根据变量“a”包含的表名从各种表中检索信息但是当我执行它时它是给我一个例外。请帮忙......

MyOleDbConnection.Open();
string a = "login";
string query = string.Format("select Email,Username,PhoneNo,Department from '{1}' where Email='{0}'", editrecordtextBox.Text,a);
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter();
da = new OleDbDataAdapter(query, MyOleDbConnection.vcon);
da.Fill(dt);

注意 - 这只是代码的一部分,仅在此代码中出现异常。

2 个答案:

答案 0 :(得分:4)

您的代码实际上正常运行。

首先,删除表名周围的单引号。这些标记文本,而不是标识符或名称。

我可以想象login是一个重新命名的名称,你不能在SQL中用作纯文本。根据数据库,您可以引用您的表名,以便将其识别为名称,而不是保留字。

对于SQL-Server,将使用[]

完成
string query = string.Format("select Email,Username,PhoneNo,Department from [{1}] where Email='{0}'", editrecordtextBox.Text,a);

如果您愿意将数据库提供给我们,我们可以提供帮助。

答案 1 :(得分:0)

测试和工作的方式类似于下面,因为你看到表名是变量形式我用连接3部分一起进行查询

string query = "SELECT TOP 1 * FROM M" + TableName.ToString() + " ORDER BY ID 
DESC";