2015-11-10 1 views
1

Мой код для поиска Данные В SQL Server Compact Database не работает, пожалуйста, просмотрите мой код. Любая помощь будет оценена.Как искать в SQL Server Compact Database в приложении Windows Forms с использованием C#?

#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, токен по ошибке =%]

+0

Вы добавили точку останова и проверили значение переменной «sql»? –

+0

Я добавил точку останова, и она выбрасывает исключение в этом коде. SqlCeResultSet rs = cmd.ExecuteResultSet ( ResultSetOptions.Scrollable); –

+0

Можете ли вы показать значение sql? –

ответ

2

Полезным способом решения таких проблем является просмотр строки SQL, сгенерированной вашим кодом, перед отправкой на SQL Server. Если вы сразу заметите проблему, это здорово - исправьте ее. Если вы не можете попробовать выполнить полный запрос напрямую с помощью SQL Server Management Studio и посмотреть, понимаете ли вы эту проблему. Если вы по-прежнему не можете размещать этот вопрос в качестве вопроса на Q & Сайт (так же, как здесь, на SO), и вам будет намного легче помочь.

В этом случае мне кажется, что вам не хватает одиночных кавычек вокруг значения ("like 'text'") - но я не могу быть уверен, что это зависит от значения tbSearch.Text.

+0

Я добавил ** точку останова ** и это исключение в этом коде. SqlCeResultSet rs = cmd.ExecuteResultSet (ResultSetOptions.Scrollable); –