SQL命令,字符串为表名

时间:2017-01-13 07:41:47

标签: c# sql wpf

private DataTable zGetTableContent(string tablename)
{
        DataTable dt = new DataTable();
        Connection.Open();

        MessageBox.Show(tablename);

        Adapter = new OleDbDataAdapter("SELECT * FROM '%" + tablename + "%'", Connection);
        Adapter.Fill(dt);

        Connection.Close();
        return dt;
}

尝试使上述代码正常工作,但正在努力解决它。我想我的字符串做错了。但无法弄清楚是什么。

字符串完美地传递给方法。 MessageBox显示正确的字符串。但我的适配器说

  

查询中的语法错误。不完整的查询条款

如果我自己输入表名,一切正常。

修改

连接数据库(Access):

    static private OleDbConnection Connection = new OleDbConnection();

    private void zPrepConnect(string SourceFile)
    {
        Connection.ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source = {0};", SourceFile);
        Command.Connection = Connection;
    }   

编辑#2: 表名如下:

  • RSTW
  • simis
  • simis w
  • simis c

编辑#3: 从表名中删除了空格但仍无法正常工作:

  • RSTW
  • simis_is
  • simis_w
  • simis_c

2 个答案:

答案 0 :(得分:2)

你不需要'或查询中的%符号,只需使用名称:

  Adapter = new OleDbDataAdapter("SELECT * FROM [" + tablename + "]", Connection);

检查msdn以确保语法。

答案 1 :(得分:0)

您还可以使用string.Format

string query = string.Format ("select * from \"{0}\" ", TableName);