如何使用 C# 在 windows 表单应用程序中搜索 SQL 服务器压缩数据库?

How to Search in SQL Server Compact Database in windows form application using C#?

我在 SQL Server Compact Database 中搜索 Data 的代码无法正常工作,请检查我的代码。任何帮助将不胜感激。

    #region btnSearch_Click
    private void btnSearch_Click(object sender, EventArgs e)
    {
        SqlCeConnection con = new SqlCeConnection("Data Source="
            + System.IO.Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "Database.sdf"));
        sda = new SqlCeDataAdapter();
        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
    string sql = "select Name from tblCustomers ";
    if (tbSearch.Text.Length > 0)
    {
    sql += "where Name like " + tbSearch.Text + " % ";
    }

    try
    {
    SqlCeCommand cmd = new SqlCeCommand(sql, con);
    cmd.CommandType = CommandType.Text;

    // if you don’t set the result set to
    // scrollable HasRows does not work
    SqlCeResultSet rs = cmd.ExecuteResultSet(
    ResultSetOptions.Scrollable);

    if (rs.HasRows)
    {

    int Name = rs.GetOrdinal("Name");


    // Hold the output
    StringBuilder output = new StringBuilder();

    // Read the first record and get it’s data
    rs.ReadFirst();
    output.AppendLine(rs.GetString(Name)
    + " " + rs.GetString(Name));

    while (rs.Read())
    {
    output.AppendLine(rs.GetString(Name)
    + " " + rs.GetString(Name));
    }

    // Set the output in the label
    lblResults.Text = output.ToString();
    }
    else
    {
    lblResults.Text = "No Rows Found.";
    }

    }
    catch (SqlCeException sqlexception)
    {
    MessageBox.Show(sqlexception.Message, "Error.",
    MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message, "Error.",
    MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    con.Close();
    }

#endregion

它抛出以下异常。

There was an error parsing the query. [ Token line number = 1,Token line offset = 53,Token in error = % ]

解决此类问题的一个有用方法是在将代码发送到 SQL 服务器之前查看代码生成的 SQL 字符串。如果您能立即发现问题,那就太好了 - 修复它。如果您无法直接使用 SQL Server Management Studio 尝试 运行 完整查询,看看您是否理解问题所在。如果您仍然无法 post 将此查询作为问答网站上的问题(就像 SO 上的此处一样),它会更容易帮助您。

在这种情况下,在我看来您好像缺少围绕值 ("like 'text'") 的单引号 - 但我不能确定,因为它取决于 tbSearch.Text 的值.