C# & SQL 服务器 - 插入不同的表(if/case 语句)

C# & SQL Server - insert into different tables (if/case statement)

我有要插入到 MYTABLE 中的 SYMBOLS 及其数据的列表。我希望如果 SYMBOL = 'ABC',数据将被插入 MYTABLE_ABC,如果 SYMBOL = 'DCE',它将被插入 MYTABLE_DCE 等...

我正在使用 SQL 服务器。考虑 IF/CASE 语句?但是无法弄清楚 C# 控制台应用程序中的语法。

Public String toInsert()
{
    String output = "insert into MYTABLE (id,symbol,date,time, value,type) values ( " + id + ",'" + symbol + "', ('" + date +"'), ('" + time + "')," + value + ",'" + type + "')";
    return output;
}

怎么样...

public String toInsert()
{
  if (symbol == "ABC")
    return "insert into MYTABLE_ABC (id,symbol,date,time, value,type) values ( " + id + ",'" + symbol + "', ('" + date +"'), ('" + time + "')," + value + ",'" + type + "')";
  else
  if (symbol == "DEF")
    return "insert into MYTABLE_DEF (id,symbol,date,time, value,type) values ( " + id + ",'" + symbol + "', ('" + date +"'), ('" + time + "')," + value + ",'" + type + "')";
  else
    return null;
}

为什么不直接将 table 名称写成变量?你可以对字符串做任何你喜欢的事情,因为它是一个字符串,而不是函数或其他东西。

喜欢:

String Table_Name;
switch (symbol)
{
    case "ABC": Table_Name = "MYTABLE_ABC";
    case "DEF": Table_Name = "MYTABLE_DEF";
(blabla....)
}
String output = "insert into " +Table_Name+ " (id,symbol,date,time, value,type) values ( " + id + ",'" + symbol + "', ('" + date +"'), ('" + time + "')," + value + ",'" + type + "')";

            return output;

使用 String.Format() 方法进行字符串连接。

您可以在创建插入语句字符串时将值 symbol 附加到 "MYTABLE_"。如果 symbol 的每个值都遵循相同的模式,那么它将起作用。如果您想要更灵活地识别未知符号值或根据 symbol 的值以不同方式格式化 table 名称,那么使用 switch 语句可能是可行的方法。

public String toInsert()
{
    String output = String.Format("insert into MYTABLE_{0} (id,symbol,date,time, value,type) values ( '{1}', ('{2}'), ('{3}'), {4}, '{5}', {6} )", symbol, id, symbol, date, time, value, type);

    return output;
}

public String toInsert()
{
    String tableName;

    switch (symbol)
    {
        case "ABC":
        case "XYZ":
        case "B2M":
            tableName="MYTABLE_" + symbol;
            break;
        case "A12":
            tableName="MYTABLE_TEST";
            break;
        case string.Empty:
        case NULL:
            tableName="MYTABLE";
            break;
        default:
            // as an example the default case could throw an error if you don't want to process unknown symbols. Or you could use a different tableName format pattern
            // throw new Exception("Unknown value of symbol variable ({0}", symbol);
            tableName = "MYTABLE_UnknownSymbol_"+symbol;
            break;
    }

    String output = String.Format("insert into {0} (id,symbol,date,time, value,type) values ( '{1}', ('{2}'), ('{3}'), {4}, '{5}', {6} )", myTableName, id, symbol, date, time, value, type);

    return output;
}