관리자는 드롭 다운 목록에서 사용자를 선택하고 해당 사용자와 관련된 역할을 확인란에 표시하도록 할 수 있습니다. 나는 아래의 코드를 실행하려고하면이 문제를 해결하기 위해 int 데이터 형식varchar 값 'John Mayer'를 데이터 유형 int로 변환 할 때 변환하지 못했습니다. "라는 오류가 발생합니다.
모든 아이디어를 어떻게에 '존 메이어 (John Mayer)'는 VARCHAR 값을 변환 할 때
, 나는
변환 실패거야?
아래 코드는 제가 사용하고있는 코드입니다.
'//Markup <p> <b>Select a User:</b> <asp:DropDownList ID="UserList" runat="server" AutoPostBack="True" DataTextField="UserName" DataValueField="LoginId" OnSelectedIndexChanged="UserList_SelectedIndexChanged"> </asp:DropDownList> </p> <p> <div class="roleList"> <asp:CheckBoxList ID="RoleList" runat="server"> </asp:CheckBoxList> </div> '//CodeBehind Public Sub PopulateUserList() Dim cmd As New SqlCommand("Select LoginId,UserName from tblLogin", New SqlConnection(ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString)) cmd.Connection.Open() Dim ddlValues As SqlDataReader ddlValues = cmd.ExecuteReader() UserList.DataSource = ddlValues UserList.DataValueField = "LoginId" UserList.DataTextField = "UserName" UserList.DataBind() cmd.Connection.Close() cmd.Connection.Dispose() End Sub Protected Sub UserList_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Dim conn As String = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString Dim ds As DataSet = New DataSet() Dim sql As String = "select UserRoles from tblLogin where userName = " + UserList.SelectedValue Dim AD As New SqlDataAdapter(sql, conn) AD.Fill(ds, "table") RoleList.DataSource = ds.Tables(0) RoleList.DataTextField = "UserRoles" RoleList.DataValueField = "LoginId" RoleList.DataBind() End Sub
당신이
[SQL 인젝션 경고] (http://msdn.microsoft.com /en-us/library/ms161953%28v=sql.105%29.aspx) - ** SQL 문을 연결하지 말아야 ** SQL 주입을 피하기 위해 ** 매개 변수화 된 쿼리 **를 대신 사용하십시오. –