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# 代码中进行查询。
我正在尝试执行一个简单的 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# 代码中进行查询。