String.Format()中字符串的长度

时间:2016-05-05 05:08:37

标签: c# .net

可能是我做错了什么但不知道我为什么会遇到这样的问题。
我使用的#!/bin/bash #My First Script #Info to be configured current_path=$(pwd) appName="jamesApp" jamesApp_workspace="jamesAppV2.xcworkspace" echo "Searching for $jamesApp_workspace workspace..." if [[ $(ls $jamesApp_workspace) ]]; then echo "$jamesApp_workspace found in current directory." echo "Listing all installed and connected devices..." instruments -s devices echo "Copy + Paste from above devices" echo "specify name of your decice to launch $appName" read d_device_name echo "building workspace for $d_device_name..." build_cmd=(xcodebuild -workspace jamesAppV2.xcworkspace -scheme jamesAppV2 -configuration Debug) destination="'platform=iOS,name=$d_device_name'" build_cmd+=(-destination "$destination" clean test) echo "${build_cmd[@]}" # Here it prints the valid command given above "${build_cmd[@]}" else echo "$jamesApp_workspace workspace not found" echo "Make sure your current path contains the $jamesApp_workspace workspace" echo "Place this file i.e deploy.sh within the directory containing $jamesApp_workspace workspace" fi; 占用了大约130个参数,我的代码如下所示

build_cmd=(xcodebuild -workspace jamesAppV2.xcworkspace -scheme jamesAppV2 -configuration Debug)
destination="'platform=iOS,name=$d_device_name'" 
build_cmd+=(-destination "$destination" clean test) 
echo "${build_cmd[@]}"  #Prints valid command
"${build_cmd[@]}" 

我在字符串中输出的输出就像

xcodebuild: error: option 'Destination' requires at least one parameter of the form 'key=value'

字符串不完整,不知道这背后的原因是什么,或者有任何替代方法,请建议

string.Format是否有最大长度限制?

4 个答案:

答案 0 :(得分:1)

这完全不是一个string.format问题,这不好笑。

请考虑自己做一些基本调试。

  

值(abc,efd,gr,y,t,ui,u,re,re

这不是有效的SQL。请参阅,字符串值必须处于某种类型的paranthesis(abc的'abc'instad)。

简单地说你的(顺便说一下,旧的string.format语法难以阅读 - 学会使用$“”字符串,.NET 6.0格式化的新语法)生成的SQL很糟糕你从来没有认为这是一个SQL错误

现在,对于长度问题 - 不是,没有合理的限制你会达到。有一个,但它是LONG(不确定字符串限制 - 2千兆字节RAM?)。很可能你有一个严重的表示问题(例如:字符串就在那里,你只是没有看到它,就像在调试器中那样,可能会限制输出长度)。

我会重新格式化以使用新的$“{paramname}”语法 - 一旦你点击10或20个参数,它就会更容易调试。

请注意:ToString调用所有这些参数都是多余的(无论如何都是默认调用)。

答案 1 :(得分:1)

如果您正在构建SQL查询,我强烈建议您在查询中使用参数。

以下是一个例子:

string strQuery = "Insert into TB_LN_CASES (col1, ...) VALUES (@columnOneVariable, ...)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.AddWithValue("@columnOneVariable", "yourValue");

目前你很容易受到SQL注入攻击。

要回答有关String.Format()限制的问题,请阅读here

答案 2 :(得分:0)

试试这个:

using (SqlConnection connection = new SqlConnection(this.connectionString))
{
    connection.Open();
    SqlCommand cmd = connection.CreateCommand();
    cmd.CommandText = @"Insert into TB_LN_CASES (col1, col2,col3, ..) 
                        Values (@value1, @value2, @value3, ..) ";
    cmd.Parameters.Add(new SqlParameter("@value1", value1));
    cmd.Parameters.Add(new SqlParameter("@value2", value2));
    cmd.Parameters.Add(new SqlParameter("@value3", value3));

    cmd.ExecuteNonQuery();
}

答案 3 :(得分:-2)

string.Format("@"Insert into TB_LN_CASES{0},{1},{2}", col0,col1);