1

フォルダー パスを含むデータベースがあり、あるフォルダーに含まれるすべてのフォルダーを検索したいと考えています。次の方法で部分的な結果が得られます。

select * from pathTable where Path like ?||'%'

与えられた

c:\\root\\1
c:\\root\\1 Copy
c:\\root\\1\\2
c:\\root\\1\\3\\3a
c:\\root\\1\\4

いつ ?が「c:\\root\\1」の場合、上記のクエリは次を返します

c:\\root\\1
c:\\root\\1 Copy

すべてのサブフォルダーも取得したいと思います。Sqlite が保存されたパスの '\' につまずいているのではないかと思います。私が間違ったことを誰か知っていますか?

4

1 に答える 1

1

@ 記号を使用して文字列パラメーターを「完全に」エスケープできるようにするために、次のことを行う必要がありました。

void printPaths()
    {
        string mypath = @"c:\\root\\1";
        string sql = ("select * from paths where pathdesc like @mypath");

        SQLiteCommand command = new SQLiteCommand(sql,m_dbConnection);
        command.Parameters.AddWithValue("@mypath", mypath+"%");

        SQLiteDataReader reader = command.ExecuteReader();
        while (reader.Read())
            Console.WriteLine("ID: " + reader["pathid"] + "\tpathdesc: " + reader["pathdesc"]);
        Console.ReadLine();
    }
于 2015-10-05T22:18:27.557 に答える