SQLite Select 路径总是 return 空
SQLite Select Path always return Null
我正在尝试 select 这样的字符串:"\Data\file - test.md"
我不明白为什么它一直不返回任何内容,但我可以在 SQLite 中插入
public List<String> Select(String Path)
{
List<String> list = new List<String>();
using (SQLiteCommand fmd = this.conn.CreateCommand())
{
fmd.CommandText = "SELECT * FROM FILE WHERE Path = ?";
fmd.Parameters.Add(new SQLiteParameter(Path));
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
if (r.HasRows)
{
while (r.Read())
{
list.Add(r.GetString(0));
list.Add(r.GetString(1));
list.Add(r.GetString(2));
}
}
else
{
return null;
}
}
return list;
}
如果返回null,则表示这部分代码中的函数returns
else
{
return null;
}
那是 if (r.HasRows)
的其他部分。这意味着连接已建立并执行了查询,但没有记录与您传递的参数匹配。一个原因可能是您正在传递一个带有转义序列字符的字符串,而参数值不是您打算传递的值。请调试并确保 Path
变量没有跳过任何字符。就像如果您的搜索路径包含 \
那么它应该作为 \
传递以确保它与包含此字符的 FILE
中的值匹配。
希望对你有帮助
我发现我需要使用 @ 作为参数而不是?
public List<String> Select(String Path)
{
List<String> list = new List<String>();
using (SQLiteCommand fmd = this.conn.CreateCommand())
{
fmd.CommandText = "SELECT * FROM FILE WHERE Path = @path";
fmd.Parameters.Add(new SQLiteParameter("@path", Path));
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
if (r.HasRows)
{
while (r.Read())
{
list.Add(r.GetString(0));
list.Add(r.GetString(1));
list.Add(r.GetString(2));
}
}
else
{
return null;
}
}
return list;
}
我正在尝试 select 这样的字符串:"\Data\file - test.md"
我不明白为什么它一直不返回任何内容,但我可以在 SQLite 中插入
public List<String> Select(String Path)
{
List<String> list = new List<String>();
using (SQLiteCommand fmd = this.conn.CreateCommand())
{
fmd.CommandText = "SELECT * FROM FILE WHERE Path = ?";
fmd.Parameters.Add(new SQLiteParameter(Path));
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
if (r.HasRows)
{
while (r.Read())
{
list.Add(r.GetString(0));
list.Add(r.GetString(1));
list.Add(r.GetString(2));
}
}
else
{
return null;
}
}
return list;
}
如果返回null,则表示这部分代码中的函数returns
else
{
return null;
}
那是 if (r.HasRows)
的其他部分。这意味着连接已建立并执行了查询,但没有记录与您传递的参数匹配。一个原因可能是您正在传递一个带有转义序列字符的字符串,而参数值不是您打算传递的值。请调试并确保 Path
变量没有跳过任何字符。就像如果您的搜索路径包含 \
那么它应该作为 \
传递以确保它与包含此字符的 FILE
中的值匹配。
希望对你有帮助
我发现我需要使用 @ 作为参数而不是?
public List<String> Select(String Path)
{
List<String> list = new List<String>();
using (SQLiteCommand fmd = this.conn.CreateCommand())
{
fmd.CommandText = "SELECT * FROM FILE WHERE Path = @path";
fmd.Parameters.Add(new SQLiteParameter("@path", Path));
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
if (r.HasRows)
{
while (r.Read())
{
list.Add(r.GetString(0));
list.Add(r.GetString(1));
list.Add(r.GetString(2));
}
}
else
{
return null;
}
}
return list;
}