c# SQLITE -如何通过数组或列表传递绑定参数

本文关键字:列表 绑定 参数 数组 SQLITE 何通过 | 更新日期: 2023-09-27 18:12:03

我正在使用c#和sqlite,我希望能够传递一个绑定参数数组给函数,以便我可以通过函数插入或更新。

本质上,我想做我通常在PHP中做的事情,使用PDO并使用?并在执行语句时传递一个数组,它会按顺序附加它们。但是我不知道如何在c#和sqlite中做类似的事情。

(我意识到我的设置可能有错误或效率低下,甚至有一般的编码错误。如何正确设置的任何示例,特别是一个完整的工作示例将非常感谢。)

我想要做的看起来像这样:

List<string> sqlParameters = new List<string>();
sqlParameters.Add("Red");
sqlParameters.Add("Blue");
sqlParameters.Add("Green");
updateDatabase("update table set column1 = @column1, column2= @column2 where column3 = @column3", sqlParameters);
int updateDatabase(string sql, List<string> sqlParameters)
{
    try 
    {
        dbConnection = new SQLiteConnection("Data Source=database.sqlite;Version=3;FailIfMissing=True");
        dbConnection.Open();
        sqlcommand.Prepare();
        // I want to switch this next line somehow with something that allows me to simply 
        // pass the bound parameters list or array all at once and it attaches them in 
        // order. Similar to PDO using ? and passing an array in PHP.
        sqlcommand.Parameters.AddWithValue("@column1", sqlParameters);
        SQLiteCommand command = new SQLiteCommand(sql, dbConnection);
        int affectedRows = command.ExecuteNonQuery();   
        dbConnection.Close();       
        return affectedRows;
    } 
    catch (Exception e) 
    {
        MessageBox.Show(e.ToString());
    }
    return 0;
}

--------------- 编辑-从PookyFan帮助后的结果 :---------------

如果有人关心使用这个,我的最终函数最终看起来像这样:

List<string> sqlParameters = new List<string>();
sqlParameters.Add("red");
sqlParameters.Add("blue");
updateDatabase("insert or replace into chattracking (column1, column2) VALUES (@param0, @param1)",sqlParameters);


int updateDatabase(string sql, List<string> sqlParameters)
        {
            try {
                dbConnection =
                new SQLiteConnection("Data Source=databasename.sqlite;Version=3;FailIfMissing=True");
                dbConnection.Open();
                SQLiteCommand command = new SQLiteCommand(sql, dbConnection);
                command.Prepare();
                for (int i = 0; i < sqlParameters.Count; i++) {
                    command.Parameters.AddWithValue(("@param" + i.ToString()), sqlParameters[i]);
                }                   
                int affectedRows = command.ExecuteNonQuery();               
                dbConnection.Close();
                return affectedRows;

            } catch (Exception e) {
                MessageBox.Show(e.ToString());
            }
            return 0;
        }

c# SQLITE -如何通过数组或列表传递绑定参数

像这样?

for(int i = 0; i < sqlParameters.Count; ++i)
    sqlcommand.Parameters.AddWithValue("@column" + i.ToString(), sqlParameters[i]);