2015-02-17 3 views
0

Он работает нормально в локальной системе, но при размещении на сервере он дает ошибку. Что я делаю не так?Получение несоответствия типа данных в выражении критериев

Dim ForumID As String = Session("ForumID").ToString() 
    Dim cforumId As Int32 
    cforumId = Convert.ToInt32(ForumID) 
    Dim userId As String = User.Identity.Name.ToString() 
    Dim Comments As String = (TextBox3.Text).ToString().Replace(Environment.NewLine,"<br />")  
    DIm PostedTime As String = DateTime.Now.ToString("f") 
    Dim sqlcmd As OleDbCommand 

    connection.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("Database.mdb")) 
    connection.Open() 

Я пользуюсь доступом к базе данных. Столбец Форума является ссылочным ключом к другой таблице и является типом интергеров (Число). Rest - текстовый тип данных.

sqlcmd = New OleDbCommand("insert into Thread (ForumID, Comments, UserID, PostedTime) values('@cforumId','@Comments','@userId','@PostedTime')", connection) 

    sqlcmd.ExecuteNonQuery() 

Несоответствие типов данных в выражении критериев.

TextBox3.Text = "" 

ответ

2

Похоже, что Вы пытаетесь сделать правильную вещь и использовать параметры, но вы делаете беспорядок из этого. Этот код буквально пытается вставить текстовые значения «@cforumId», «@Comments», «@userId» и «@PostedTime» в столбцы ForumID, комментарии, UserID и PostTime соответственно. То, что вам нужно сделать, это сделать эти вещи в кластерах с параметрами позиции VALUES вместо строк, а затем добавить соответствующие параметры, например.

sqlcmd = New OleDbCommand("INSERT INTO Thread (ForumID, Comments, UserID, PostedTime) VALUES ('@ForumID','@Comments','@UserID','@PostedTime')", connection) 

With sqlcomd.Parameters 
    .AddWithValue("@ForumID", forumId) 
    .AddWithValue("@Comments", comments) 
    .AddWithValue("@UserID", userId) 
    .Add("@PostedTime", OleDbType.Date).Value = postedTime 
End With 

sqlcmd.ExecuteNonQuery() 

Обратите внимание, что путь добавлен последний параметр и установить отличается тем, что, в случае, если по умолчанию, AddWithValue будет выводить неправильный тип данных для значения DateTime. Если AddWithValue работает на вас, то идите с ним.

Смежные вопросы