C#为TableName用法的变量添加'['']'

时间:2012-04-12 16:27:56

标签: c# string ssis

我在SSIS包中工作。我有一些C#脚本用于将表名放入对象变量(Access表)。代码连接到Access DB并循环表,将其名称用于变量。

分配如下:

using System;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;

namespace ST_9b2714c55db14556be74ca92f345c4e3.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        public void Main()
        {
            Variables varCollection = null;
            DataTable schemaTables = null;
            ArrayList tableNames = new ArrayList();

            Dts.VariableDispenser.LockForWrite("User::AccessTables");
            Dts.VariableDispenser.GetVariables(ref varCollection);

            using (OleDbConnection connection = new OleDbConnection(Dts.Connections["TE030698.Bases"].ConnectionString.ToString()))
            {
                string[] restrictions = new string[4];
                restrictions[3] = "Table";
                connection.Open();
                schemaTables = connection.GetSchema("Tables", restrictions);
            }

            foreach (DataRow row in schemaTables.Rows)
            {
                foreach (DataColumn column in schemaTables.Columns)
                {
                    if (column.ColumnName.ToUpper() == "TABLE_NAME")
                    {
                        tableNames.Add(row[column].ToString());
                    }
                }
            }

            varCollection["User::AccessTables"].Value = tableNames;

            Dts.TaskResult = (int)ScriptResults.Success;

问题是一些表以数字开头或包含空格。所以我需要在[]中保存名称。 2012年是一张桌子,但我需要它[2012]。我怎么能改变C#代码呢?

我对C#很陌生,所以任何建议都会非常感激。感谢

2 个答案:

答案 0 :(得分:3)

您可以更改

tableNames.Add(row[column].ToString());

tableNames.Add(string.Format("[{0}]", row[column].ToString()));

有关string.Format的更多信息:
http://msdn.microsoft.com/en-us/library/system.string.format.aspx

另一种方法是简单地连接:

tableNames.Add("[" + row[column].ToString() + "]");

但是,如果您的格式变得非常复杂,则不鼓励连接。

答案 1 :(得分:1)

如果表名是"2010",您只需将其包装在方括号中,"[" + "2012" + "]"

如果您在变量中使用'2012',则可以执行类似

的操作
string strTableName = "2012";
strTableName = String.Format("[{0}]", strTableName);

我希望这会有所帮助。