C# SQL select 来自 [tablename] 错误

C# SQL select from [tablename] error

我正在尝试执行一个简单的 SQL select 语句,但是我正在尝试访问的 SQL 服务器 table 可以有一个 table 名称,包括第一个位置的数字、空格、SQL 关键字等。

如果我理解正确,在 table 名称两边加上方括号应该可以让我这样做,但它似乎不起作用。

tr_projekt 是一个字符串,其中包含我要访问的 table 的名称 - 例如,使用 tr_projekt = "4test" 我得到

Incorrect syntax error near 4

后跟 System.NullReferenceException

对于常规 table 名称,如 tr_projekt = "test",它可以正常工作。

string type = "";
SqlConnection conn = new SqlConnection(connString);            
SqlCommand command = new SqlCommand("SELECT DisplayType FROM [" + tr_projekt + "]");
command.Connection = conn;                           
conn.Open();             
type = command.ExecuteScalar().ToString();
conn.close();

有什么建议吗?

首先,您必须创建连接字符串,并从 string.Format(string,params[]) 获得帮助,这将是查看您在做什么的最干净的方式。

打断点:command.Connection=conn; 然后指向命令并找到 属性 commandText 以查看您的 sql 命令副本并尝试直接 运行 命令您的 dbms(sql 我看到的服务器管理,dbvisualizer,mysql workbench 或任何其他您使用的)

table 名称中有一些规则: n SQL Server 2012,一个对象名称最长可达128个字符。

不带引号的标识符名称必须遵循以下规则:

  • 第一个字符必须是字母数字、下划线 (_)、at 符号 (@) 或数字符号 (#)。
  • 后续字符可以包括字母数字字符、下划线、at (@) 符号、数字符号或美元符号。
  • 不允许嵌入空格或特殊字符。

我认为您可能遗漏了一些引号或双引号,请尝试直接对数据库进行查询,然后用作模型以在 C# 代码中进行查询。