我尝试编写查询,但我的查询以“Control nvarchar(500)”结束。我想完成“控制nvarchar(500)”如何删除“,”,“”?
void SqlTable(List listMyColumnNames, string TableName)
{
string Text = "Create table ENG_"+TableName+" (ENG_"+TableName+"_ID integer PRIMARY KEY identity(1,1), ";
char[] MyChar = {',', ' ' };
for (int i = 0; i < listMyColumnNames.Count; )
{
Text+=listMyColumnNames[i]+" nvarchar(500), ";
if (i == listMyColumnNames.Count-1)
Text.TrimEnd(MyChar);
i++;
}
Text+=" )";
答案 0 :(得分:11)
我想你可能想看看String.Join
。你可以做的是转换你的列名字符串,包含你的colum的SQL定义,例如MyColumnName[1]+" nvarchar(500)", into a
listMyColumnDef array, then
以逗号作为分隔符加入该数组。
好处:
缺点......无:)
for( String name in listMyColumnNames ) {
listMyColumnDefs.Add( name + " nvarchar(500)" );
}
String mycolumndef = String.Join( listMyColumnDefs, ", ");
答案 1 :(得分:3)
有很多方法可以解决这个问题,但这是代码中的问题:
if (i == listMyColumnNames.Count-1)
Text.TrimEnd(MyChar); // doesn't work like this!
String
是不可变的:你不能在它上面调用一个方法,并期望它被方法改变。 TrimEnd
代替返回 new String
,因此您需要做的是:
Text = Text.TrimEnd(MyChar); // now works fine!
答案 2 :(得分:0)
for (int i = 0; i < listMyColumnNames.Count; ++i)
{
Text += listMyColumnNames[i] + " nvarchar(500)";
if (i < listMyColumnNames.Count-1)
Text += ", ";
}
答案 3 :(得分:0)
或者你可以删除你的Trim调用并添加`Text = Text.Replace(“,)”,“)”);'在最后。
答案 4 :(得分:0)
您是否考虑过使用StringBuilder对象来构建字符串,而不是在循环中连接您的字符串!