如何在windows窗体应用程序中使用C#在SQL Server Compact数据库中进行搜索

本文关键字:Server Compact 数据库 搜索 SQL windows 窗体 应用程序 | 更新日期: 2023-09-27 18:21:28

我的用于搜索数据的代码SQL Server Compact数据库中不起作用,请查看我的代码。任何帮助都将不胜感激。

    #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

它抛出了贝娄异常。

分析查询时出错。[令牌线编号=1,令牌线偏移=53,令牌错误=%]

如何在windows窗体应用程序中使用C#在SQL Server Compact数据库中进行搜索

解决此类问题的一种有用方法是在将代码发送到SQL Server之前查看代码生成的SQL字符串。如果你能立即发现问题,那就太好了。如果你不能尝试直接用SQL Server Management Studio运行完整的查询,看看你是否理解这个问题。如果你仍然不能把这个问题作为一个问题发布在问答上;一个网站(就像这里的SO),它会更容易帮助你。

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