gpt4 book ai didi

asp.net - 如何在 asp.net 中存储参数以便与 sql 一起使用?

转载 作者:行者123 更新时间:2023-11-29 00:29:11 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012 和 MySQL 构建我的第一个网站。这是我第一次真正使用它们中的任何一个,所以我的知识还很匮乏,但我正在慢慢地学习。

我正在尝试开发一个网站,用于我们工作中的上锁/挂牌数据库。它最终将具有自动生成报告/标签的能力,但我还没有做到这一点。我希望能够做的是提供两个下拉列表,一个用于复杂的,另一个用于机器(这些将用于对给定的设备进行排序)。当用户选择一个特定的复合体时,我希望机器下拉列表仅限于该复合体特定的机器。例如,我的 SQL 查询看起来像这样:

SELECT * FROM machine WHERE complex_id = complex.complex_id ORDER BY machine_name;

为了比较 machine.complex_id 和 complex.complex_id,我认为使用参数是正确的做法。

SELECT * FROM machine WHERE complex_id = @compid ORDER BY machine_name;

但是,我对在 SQL 语句中使用参数感到厌烦。查看了以下页面:MSDN ,我能够弄清楚如何在 SQL 语句中使用参数。但是,我不清楚如何实际创建参数。即使经过大量谷歌搜索,我也没有发现任何真正脱颖而出的正确方法来实现我正在努力实现的目标。

编辑

<%@ Page Title="Lockout" Language="VB" MasterPageFile="~/Site.Master" 
AutoEventWireup="true" CodeBehind="Lockout.aspx.vb" Inherits="Lockout.Lockout" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">

<asp:DropDownList
ID="DropDownList_Complex"
runat="server"
DataTextField="complex_name"
DataSourceID="SqlDataSource_Complex"
DataValueField="complex_id"
AutoPostBack="True"
AppendDataBoundItems="True">
<asp:ListItem Value="" Selected="True">
Select
</asp:ListItem>
</asp:DropDownList>

<asp:DropDownList
ID="DropDownList_Machine"
runat="server"
DataTextField="machine_name"
DataSourceID="SqlDataSource_Machine"
DataValueField="machine_id"
AutoPostBack="True"
AppendDataBoundItems="true">
<asp:ListItem Value="" Selected="True">
Select
</asp:ListItem>
</asp:DropDownList>

<asp:SqlDataSource
ID="SqlDataSource_Complex"
runat="server"
ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>"
ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>"
SelectCommand="SELECT complex_id, complex_name FROM complex ORDER BY complex_name">
</asp:SqlDataSource>

<asp:SqlDataSource
ID="SqlDataSource_Machine"
runat="server"
ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>"
ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>"
SelectCommand="SELECT machine_id, machine_name, complex_id FROM machine ORDER BY machine_name">
</asp:SqlDataSource>

最佳答案

您想在 SqlDataSource(填充机器下拉列表的那个)中使用指向您提到的第一个下拉列表(复杂的下拉列表)的 ControlParameter。像这样:

<asp:SqlDataSource
ID="SqlDataSource_Machine"
runat="server"
ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>"
ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>"
SelectCommand="SELECT machine_id, machine_name, complex_id FROM machine WHERE complex_id=@complex_id ORDER BY machine_name">
<SelectParameters>
<asp:ControlParameter Name="complex_id" ControlId="DropDownList_Complex" PropertyName="SelectedValue"/>
</SelectParameters>
</asp:SqlDataSource>

这样,当您在 DropDownList_Complex 中选择一个值时,它会自动填充用于填充下一个下拉列表的查询的参数。

请注意,您可能希望在 DropDownList_Complex 上将“AutoPostBack”设置为 true(以自动重新加载)。

关于asp.net - 如何在 asp.net 中存储参数以便与 sql 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17427841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com