2017-09-27 180 views
0

我試圖傳遞參數的值,但它返回的是什麼。如果我使用不帶參數的簡單sql命令,我可以從數據庫中檢索所有數據。 這裏是我的代碼:我怎樣才能將參數傳遞給sqldataadapter?

Public Shared Function RetrieveData() As DataTable 
 
    Connection.Open() 
 
    Try 
 
     sql = "SELECT DEP_ID AS CODE, DEP_NAME AS DEPARTMENT FROM DEPART_TBL WHERE " & FieldName & " LIKE N'%@criteria%'" 
 
     da = New SqlDataAdapter 
 
     da.SelectCommand = New SqlCommand(sql, Connection.SQLConnection) 
 
     da.SelectCommand.Parameters.Add("@criteria", SqlDbType.NChar) 
 
     da.SelectCommand.Parameters("@criteria").Value = "KCL" 
 
     'da.SelectCommand.Parameters.Add("@criteria", SqlDbType.NChar, 10, "DEP_ID") 
 
     'Message.ShowInfo(da.SelectCommand.CommandText.ToString) 
 
     'Exit Function 
 
     dt = New DataTable 
 
     da.Fill(dt) 
 
    Catch ex As Exception 
 
     Message.ShowError(ex.Message) 
 
    End Try 
 
    da.Dispose() 
 
    Connection.Close() 
 
    Return dt 
 
End Function

+0

與曲無關但是您可以在將變量添加到命令的同時爲變量賦值,同時在傳遞字符串參數時指定長度也是一個好主意。所以你的代碼可能是 - 'da.SelectCommand.Parameters.Add(「@ criteria」,SqlDbType.NChar,50).Value =「KCL」' – GarethD

回答

1

您正在搜索的字符串@criteria,你要使用的參數,所以使用:

sql = "SELECT DEP_ID AS CODE, DEP_NAME AS DEPARTMENT FROM DEPART_TBL WHERE " & FieldName & " LIKE N'%' + @criteria + '%'" 

,或者您可以在使用它參數:

da.SelectCommand.Parameters("@criteria").Value = "%KCL%" 
+0

是的,謝謝你的回答。它有效,但似乎不接受空白參數。 –

相關問題