DataTable Select параметризованный как SQL Select, где x = @param - PullRequest
0 голосов
/ 17 февраля 2012

Каков синтаксис запроса для получения строк DataTable, эквивалентных этому SQL-запросу?

        SQLiteConnection cnn = new SQLiteConnection(System.String.Format("Data Source={0}", fpath));

        cnn.Open();
        DataTable primaryfeed = new DataTable();

        using (SQLiteTransaction dbTrans = cnn.BeginTransaction())
        {
            using (SQLiteCommand cmd = cnn.CreateCommand())
            {

                string command = System.String.Format("SELECT col1, col2, col3, col4 FROM AccountDataBase WHERE ID = @ID");

                SQLiteParameter param1 = new SQLiteParameter();

                param1.ParameterName = "@ID";

                cmd.Parameters.Add(param1);

                cmd.CommandText = command;

                for (int i = 0; i < selectedIDs.Length; i++)
                {

                    param1.Value = selectedIDs[i];

                    SQLiteDataReader reader = cmd.ExecuteReader();
                    primaryfeed.Load(reader);
                    reader.Close();
                }
            }
            dbTrans.Commit();
        }
        cnn.Close();

Итак, у меня есть DataTable и строковый массив ID.Какова команда для получения всех строк из DataTable, которые имеют значения ID из массива, как можно быстрее?

Это намного медленнее, чем эквивалентный SQL-запрос?

1 Ответ

0 голосов
/ 17 февраля 2012

Если myTable имеет столбец с именем ID, то вы делаете:

var foundRows = myTable.Select("ID IN (1, 12, 14, 10)");
...