2016-06-30 2 views
0

Я создал местную службу на основе базы данных, и я пытаюсь вставить данные в него с INSERT заявлением:Выполнение команды INSERT в LocalDB

public void InsertRule(Rule r) 
{ 
    SqlConnection sqlConnection1 = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\RulesDB.mdf;Integrated Security=True;Connect Timeout=30"); 

    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = ("INSERT INTO TblRules (From, To, ExecutablePath) VALUES (@From, @To, @ExecutablePath"); 

    cmd.Parameters.Add("@From",SqlDbType.DateTime); 
    cmd.Parameters["@From"].Value = r.From; 

    cmd.Parameters.Add("@To",SqlDbType.DateTime); 
    cmd.Parameters["@To"].Value = r.To; 

    cmd.Parameters.Add("@ExecutablePath",SqlDbType.Text); 
    cmd.Parameters["@ExecutablePath"].Value = r.ExecutablePath; 

    cmd.Connection = sqlConnection1; 

    sqlConnection1.Open(); 
    cmd.ExecuteNonQuery(); 

    sqlConnection1.Close(); 
} 

Я получаю SqlException:

Дополнительная информация: Неверный синтаксис рядом с ключевым словом 'From'.

Заранее спасибо.

+1

«@ExecutablePath)» в конце –

+4

'от' является SQL Server зарезервирован ключевое слово и ** НЕ следует использовать ** как имя столбца! Если вы не можете его изменить, вам нужно поместить его в квадратные скобки: '[From]' в качестве имени столбца –

+0

Спасибо, что работает. но теперь, когда я выполняю этот код, ему не кажется, что он обновил базу данных с новой информацией –

ответ

1

FROM является SQL keywoard, поэтому вы не можете использовать его в инструкции. Вам следует избегать этого, используя квадратные скобки [From]. Это то, что ошибка о

Это означает, что вы должны изменить эту строку

cmd.CommandText = ("INSERT INTO TblRules (From, To, ExecutablePath) VALUES (@From, @To, @ExecutablePath"); 

в

cmd.CommandText = (@"INSERT INTO TblRules ([From], To, ExecutablePath) VALUES (@From, @To, @executablePath); 
Смежные вопросы