2014-09-29 3 views
0

Я пытаюсь сделать insert в таблице SQL Server для аудита при входе в панель администратора. Я хочу узнать, какое устройство они используют. Как мне это сделать?SQL Server: Insert get user agent

Это то, что у меня есть до сих пор, и оно не работает, это дает мне ошибку, что утверждение было прервано.

string sUA = Request.UserAgent; 

using (SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString)) 
{ 
    using (SqlCommand sqlCmd1 = new SqlCommand { CommandText = "INSERT INTO dbo.audit ([user], [login], [pass], [timestamp], [device]) VALUES ('test', 'test', 'test', @time, @device)", Connection = sqlCon }) 
    { 
     sqlCmd1.Parameters.AddWithValue("@time", DateTime.Now); 
     sqlCmd1.Parameters.AddWithValue("@device", sUA); 

     sqlCon.Open(); 

     { 
      sqlCmd1.ExecuteNonQuery(); 

      sqlCon.Close(); 
     } 
    } 
} 
+1

вы можете предоставить сообщение об ошибке, почему утверждение завершено? – Anton

+0

Исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll, но не было обработано в коде пользователя Дополнительная информация: Строковые или двоичные данные будут усечены. Заявление было прервано. –

+0

Проверьте длину столбца - то, что вы пытаетесь вставить, слишком длинное ** для столбца, в который вы пытаетесь вставить его! Мое предположение - столбец '[device]', который получает строку пользовательского агента - как долго он определяется в базе данных? Как долго строка пользовательского агента вы пытаетесь вставить в нее? –

ответ

1

Исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll, но не был обработан в коде пользователя Дополнительная информация: Строка или двоичные данные будут усечены. Заявление было прекращено.

Это означает, что данные, которые вы пытались вставить, слишком велики для одного или нескольких столбцов.

Вы должны увеличить размер в зависимости от того столбца слишком мал (у меня есть подозрение, что это ваша колонка устройства, но мы не можем сказать, если мы не видим структуру таблицы, и ваши тестовые данные)

+0

, что странно, потому что я дал ему 100 символов. nvarchar (100) –

+0

@BillyBoel и как насчет столбца времени? что это за тип? – Anton

+0

На самом деле это работает, я должен был дать nvchar (MAX), по какой-то причине он не дает мне правильный агент пользователя. Это дало мне этот Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (KHTML, как и Gecko) Chrome/37.0.2062.124 Safari/537.36 –