Ошибка There was an error parsing the query. [ Token line number = 1,Token line offset = 43,Token in error = записи ] - C#
Формулировка задачи:
В чем проблема, не могу понять. Вот исходник:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlServerCe;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// настройка компонента ListView:
// увеличим ширину компонента на 17 - ширину
// полосы прокрутки
int w = 0;
for (int i = 0; i < listView1.Columns.Count; i++)
{
w += listView1.Columns[i].Width;
}
if (listView1.BorderStyle == BorderStyle.Fixed3D)
w += 4;
listView1.Width = w+17; // 17 - область отображения полосы прокрутки
// выделять всю строку (элемент и подэлементы)
listView1.FullRowSelect = true;
}
private void Form1_Load(object sender, EventArgs e)
{
// Cоздать БД SQL Server Compact Edition.
// Если путь к файлу не указан, БД будет создана
// в каталоге приложения
SqlCeEngine engine;
engine = new SqlCeEngine("Data Source='notebook.sdf';");
if (!(File.Exists("notebook.sdf")))
{
engine.CreateDatabase();
SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
connection.Open();
SqlCeCommand command = connection.CreateCommand();
command.CommandText =
"CREATE TABLE notebook (№ записи int IDENTITY(1,1), Заголовок записи nvarchar(50) NOT NULL, Дата записи(50), Запись nvarchar(50))";
command.ExecuteScalar();
connection.Close();
}
else
{
ShowDB();
}
}
private void ShowDB()
{
SqlCeEngine engine = new SqlCeEngine("Data Source='notebook.sdf';");
SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
connection.Open();
SqlCeCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM notebook ORDER BY Заголовок записи";
[COLOR="Yellow"]SqlCeDataReader dataReader = command.ExecuteReader();[/COLOR]
string st; // значение поля БД
int itemIndex = 0;
listView1.Items.Clear();
while (dataReader.Read())
{
for (int i = 0; i < dataReader.FieldCount; i++)
{
st = dataReader.GetValue(i).ToString();
switch (i)
{
case 0: // поле cid
listView1.Items.Add(st);
break;
case 1: // поле name
listView1.Items[itemIndex].SubItems.Add(st);
//listView1.Items.Add(st);
break;
case 2: // поле phone
listView1.Items[itemIndex].SubItems.Add(st);
break;
case 3: // поле email
listView1.Items[itemIndex].SubItems.Add(st);
break;
};
}
itemIndex++;
}
connection.Close();
}
// пользователь выбрал строку в поле компонента listView
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
// При выборе строки событие ItemSelectionChanged возникает два раза:
// первый раз, когда выделенная в данный момент строка теряут фокус,
// второй - когда строка, в которой сделан щелчок, получает фокус.
// Нас интересует строка, которая получает фокус.
if (e.IsSelected)
{
// строка выбрана, т.е. она получила фокус
textBox4.Text = listView1.Items[e.ItemIndex].Text;
for (int i = 1; i < listView1.Items[e.ItemIndex].SubItems.Count; i++)
{
switch (i)
{
case 1:
textBox1.Text = listView1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 2:
textBox2.Text = listView1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 3:
textBox3.Text = listView1.Items[e.ItemIndex].SubItems[i].Text;
break;
}
}
}
}
// щелчок на кнопке Добавить
private void button1_Click(object sender, EventArgs e)
{
SqlCeConnection conn = new SqlCeConnection("Data Source ='notebook.sdf'");
conn.Open();
SqlCeCommand command = conn.CreateCommand();
command.CommandText = "INSERT INTO notebook(Заголовок записи, Дата записи, Запись) VALUES(?,?,?)";
command.Parameters.Add("Заголовок записи", textBox1.Text);
command.Parameters.Add("Дата записи", textBox2.Text);
command.Parameters.Add("Запись", textBox3.Text);
command.ExecuteScalar();
conn.Close();
// очистить поля ввода
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
ShowDB();
// установить курсор в поле textBox1
textBox1.Focus();
}
// щелчок на кнопке Найти
private void button2_Click(object sender, EventArgs e)
{
SqlCeEngine engine = new SqlCeEngine("Data Source='notebook.sdf';");
SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
connection.Open();
SqlCeCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM notebook WHERE (Заголовок записи LIKE ?)";
command.Parameters.Add("Заголовок записи", "%" + textBox1.Text + "%");
SqlCeDataReader dataReader = command.ExecuteReader();
string st; // значение поля БД
int itemIndex = 0;
listView1.Items.Clear();
while (dataReader.Read())
{
for (int i = 0; i < dataReader.FieldCount; i++)
{
st = dataReader.GetValue(i).ToString();
switch (i)
{
case 0: // поле cid
listView1.Items.Add(st);
break;
case 1: // поле name
//listView1.Items.Add(st);
listView1.Items[itemIndex].SubItems.Add(st);
break;
case 2: // поле phone
listView1.Items[itemIndex].SubItems.Add(st);
break;
case 3: // поле email
listView1.Items[itemIndex].SubItems.Add(st);
break;
};
}
itemIndex++;
}
connection.Close();
}
// щелчок на кнопке Удалить
private void button3_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count != 0)
{
//MessageBox.Show(listView1.SelectedItems[0].Text);
SqlCeEngine engine = new SqlCeEngine("Data Source='notebook.sdf';");
SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
connection.Open();
SqlCeCommand command = connection.CreateCommand();
command.CommandText = "DELETE FROM notebook WHERE (№ записи = ?)";
command.Parameters.Add("№ записи", textBox4.Text);
command.ExecuteScalar(); // выполнить команду
ShowDB();
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
}
}
// щелчок на кнопке Изменить
private void button4_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count != 0)
{
SqlCeEngine engine = new SqlCeEngine("Data Source='notebook.sdf';");
SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
connection.Open();
SqlCeCommand command = connection.CreateCommand();
command.CommandText = "UPDATE notebook SET Заголовок записи = ?, Дата записи =?, Запись=? WHERE № записи = ?";
command.Parameters.Add("Заголовок записи", textBox1.Text);
command.Parameters.Add("Дата записи", textBox2.Text);
command.Parameters.Add("Запись", textBox3.Text);
command.Parameters.Add("№ записи", textBox4.Text);
command.ExecuteScalar(); // выполнить команду
ShowDB();
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
}
}
// изменился текст в поле редактирования
private void textBox1_TextChanged(object sender, EventArgs e)
{
// кнопка Добавить становится доступной, если информация введена
// в поле Имя и в какое-либо из полей Телефон или E-mail
if ((textBox1.TextLength > 0) &&
((textBox2.TextLength > 0) || (textBox3.TextLength > 0)))
button1.Enabled = true;
else
{
button1.Enabled = false;
}
}
}
}Решение задачи: «Ошибка There was an error parsing the query. [ Token line number = 1,Token line offset = 43,Token in error = записи ]»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
SqlCeConnection conn = new SqlCeConnection("Data Source = mydb.sdf; Persist Security Info=False;");
conn.Open();
SqlCeCommand command = conn.CreateCommand();
command.CommandText = "INSERT INTO Bud (Budget,Food,Clothes,Electronics,Entertaiment,Credits) VALUES (?,?,?,?,?,?)";
command.Parameters.Add("Budget", textBox1.Text.ToString());
command.Parameters.Add("Food", textBox2.Text.ToString());
command.Parameters.Add("Clothes", textBox3.Text.ToString());
command.Parameters.Add("Electronics", textBox4.Text.ToString());
command.Parameters.Add("Entertaiment", textBox5.Text.ToString());
command.Parameters.Add("Credits", textBox6.Text.ToString());
command.ExecuteScalar();
conn.Close();
}