使用c插入/更新sql的自定义函数#

vhmi4jdf  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(196)

抱歉,如果这个论点已经被处理,但我没有找到任何东西。
我正在编写一个有许多插入/更新查询的程序,我的问题是我不喜欢用string.format方法编写这么多查询,比如:

query = "INSERT INTO righe_comanda (id_originale, quantita, nome, prezzo, id_comanda,";
query += "variazionipositive,variazioninegative,opzioneselezionata,evaso, data_evasione, user_evasione) VALUES";
query += "({0},{1},'{2}','{3}',{4},'{5}','{6}','{7}',{8},'{9}','{10}');";
query = String.Format(query, id_originale, quantita, nome, prezzo, ID_Comanda, VariazioniPositive, VariazioniNegative, OpzioneSelezionata, Evaso, DataEvasione, UserEvasione);

很容易出现参数个数错误,例如“”等。所以我写了一个函数来自动创建查询。请参见:

public static string QueryFormat(string nometabella, string modalita, Dictionary<string, string> parametri, string where_column = null, string where_value = null)
    {
        string query = "";

        if (modalita == "INSERT")
        {
            query += "INSERT INTO " + nometabella + " (";
            foreach (var item in parametri)
            {
                query += item.Key + ", ";
            }
            query = query.Substring(0, query.Length - 2);
            query += ") VALUES (";
            foreach (var item in parametri)
            {
                query += GestisciValore(item.Value) + ", ";
            }
            query = query.Substring(0, query.Length - 2);
            query += ")";
        }
        else if (modalita == "UPDATE")
        {
            query += "UPDATE " + nometabella + " SET ";
            foreach (var item in parametri)
            {
                query += item.Key + " = " + GestisciValore(item.Value) + ", ";
            }
            query = query.Substring(0, query.Length - 2);
            query += " WHERE " + where_column + " = " + GestisciValore(where_value);
        }
        return query;
    }
    private static string GestisciValore(string valore)
    {
        int n;
        if (int.TryParse(valore, out n))
            return valore;
        else
            return "'" + valore + "'";
    }

你觉得这个怎么样?有别的选择吗?
当做

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题