ASP.net набор данных - PullRequest
       4

ASP.net набор данных

0 голосов
/ 16 февраля 2012
da = New SqlDataAdapter("select * from revision_cycle_documenttype_mapping where project_id=" & Session("project_id"), con)
cb = New SqlCommandBuilder(da)
ds = New DataSet
da.Fill(ds, "revision_cycle_documenttype_mapping")   <<--
mapping_count = ds.Tables("revision_cycle_documenttype_mapping").Rows.Count
Response.Write(mapping_count)

Я получаю сообщение об ошибке "Неверный синтаксис рядом с '='".Я показал, в какой части он выдает ошибку, т.е. da.fill.

Не могли бы вы мне помочь?

Ответы [ 3 ]

0 голосов
/ 16 февраля 2012

Я думаю, что ваша сессия Session("project_id") пуста, и это не лучший способ добавить параметр в ваш оператор SQL.Ваш код здесь уязвим для инъекций SQL.сначала вы должны проверить, пустой ли ваш сеанс, а затем добавить параметры, объявив команду sql и присвоив ей параметры:

dim project_id as integer = 0
If Session("project_id") IsNot Nothing AndAlso IsNumeric(Session("project_id")) Then
project_id  = Session("project_id")
end if
dim cmd as new sqlcommand
cmd.parameters.add("@project_id",project_id)

остальная часть вашего кода останется прежней

0 голосов
/ 16 февраля 2012

Используйте параметры и отметьте ноль.

Dim projectid=0
If Not IsNothing(Session("project_id")) Then
   projectid=DirectCast(Session("project_id"),Integer)
End If

Dim sql="select * from revision_cycle_documenttype_mapping where project_id=@project_id"
dim cmd as new SqlCommand(sql,con)
cmd.Parameters.AddWithValue("@project_id",projectid)

da = New SqlDataAdapter=(cmd)

cb = New SqlCommandBuilder(da)
ds = New DataSet
da.Fill(ds, "revision_cycle_documenttype_mapping") 
0 голосов
/ 16 февраля 2012

EDIT

Если выдает ошибку на da.Fill, попробуйте сначала посмотреть получившийся код SQL. Ваш project_id может быть пустым.

Редактировать

Это возможное решение

Dim projectId As Integer
If Session("project_id") IsNot Nothing AndAlso IsNumeric(Session("project_id")) Then
    projectId = Session("project_id")
    da = New SqlDataAdapter("select * from revision_cycle_documenttype_mapping where project_id=" & projectId, con)
    cb = New SqlCommandBuilder(da)
    ds = New DataSet
    da.Fill(ds, "revision_cycle_documenttype_mapping")   <<--
    mapping_count = ds.Tables("revision_cycle_documenttype_mapping").Rows.Count
    Response.Write(mapping_count)
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...