[英]ASP.NET C# Generate a create table statement
我正在尝试创建一个创建表的ac#语句。
以下是我当前的查询:
string user = (User.Identity.Name);
string db = user+["-Result"] + DateTime.Now.ToString("yyyyMMddHHmmss");
我正在尝试创建一个名为Jane-Result2011111111
当我的声明没有包含名称时,我能够创建表:
user+"Result" + DateTime.Now.ToString("yyyyMMddHHmmss");
我想知道我怎么能包括-
在我的发言?
谢谢
编辑
好的,您在我第一次回答后重新标记并编辑了您的问题。 尝试移动引号内的括号(或将它们全部一起移除)。
string db = user + "[-Result]" + DateTime.Now.ToString("yyyyMMddHHmmss");
C#中有更好的方法来组合字符串。 一个是String.Format
。
string db = String.Format("{0}-Result{1}", user, DateTime.Now.ToString("yyyyMMddHHmmss"));
原始答案
不确定代码是什么语言(C#?),但我猜你在第二个双引号和单词user之间需要一个+
。
string db = "'%" + user + "%'Result" + DateTime.Now.ToString("yyyyMMddHHmmss");
user + "-Result" + DateTime.Now.ToString("yyyyMMddHHmmss");
问题出现在%
符号中,这是LIKE
运算符的通配符,不应在标识符中使用。
用#
替换%
,你应该没事。
请参阅: http : //msdn.microsoft.com/en-us/library/aa274626(v = sql.80).aspx
编辑
更改问题后,更新的答案是:
string db = user+"_Result" + DateTime.Now.ToString("yyyyMMddHHmmss");
不要使用[
和更换-
用_
。
哦,不要改变问题,以便答案变得无用。
表名中不允许减号( - ),您可以使用下划线。 在此处阅读常规标识符的规则
虽然我同意其他评论员的意见,即每个用户创建一个表可能不是一个很好的设计,但你可以更加简洁地写下你的陈述:
string db = String.Format(“[{0} -Result {1}]”,user,DateTime.Now.ToString(“yyyyMMddHHmmss”));
这有帮助吗?
数据库对象名称的最佳参考是:
http://msdn.microsoft.com/en-us/library/ms175874.aspx
这告诉您未分隔对象名称中允许的特殊字符不包括-
这就是失败的原因。 您可以使用下划线(这是一个有效的字符)或通过将整个对象括在方括号中来逃避它。 这些都可以。
如果要动态创建大量表,可能存在设计问题。 您确定只是扩展模式以包含日期和用户列,然后将其全部包含在一个表中并使用where子句获取数据而不是动态生成表名,您是否会更好?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.