vs 2010 SQL更新SQL语句



请忍受我,因为我才刚刚开始学习这些东西。

我有一个VS 2010 Web项目,我正在尝试了解如何进行自定义UpdateCommand(因为我选择编写自己的SQL语句,所以我没有VS 2010的选项来自动生成更新为我命令。)问题是:我不知道UpdateCommand应该是什么样的。这是我的选择:

SELECT * FROM Dbo.MainAsset, dbo.Model, dbo.Hardware WHERE MainAsset.device = Hardware.DeviceID AND MainAsset.model = Model.DeviceID

哪个,VS 2010变成:

SELECT MainAsset.pk, MainAsset.img, MainAsset.device, MainAsset.model, MainAsset.os, MainAsset.asset, MainAsset.serial, MainAsset.inyear, MainAsset.expyear, MainAsset.site, MainAsset.room, MainAsset.teacher, MainAsset.FirstName, MainAsset.LastName, MainAsset.Notes, MainAsset.Dept, MainAsset.AccountingCode, Model.Model AS Hardware, Model.pk AS Model, Model.DeviceID, Hardware.Computer, Hardware.pk AS Expr3, Hardware.DeviceID AS Expr4 FROM MainAsset INNER JOIN Hardware ON MainAsset.device = Hardware.DeviceID INNER JOIN Model ON MainAsset.model = Model.DeviceID

如果在GridView DDL中更改,我将如何处理更新一列,例如" mainasset.pote"?任何帮助建设性的帮助将不胜感激。谢谢。

我想将UpdateCommand与SQLDATASOURCE和GRIDVIEW一起使用。

更新命令使用SQL:

Update yourTable SET columnName = 'yourValue';
Update MainAsset Set site ='http://stackoverflow.com';

在MSDN的示例中,数据库列(字段)绑定到GridView1。可以通过使用 @的DataFeel值来传递边界的值。数据库coulmn lastname将绑定到网格列<asp:BoundField HeaderText="Last Name" DataField="LastName" />,在UPDATE命令中,@lastName用于传递值:

 <asp:SqlDataSource
      id="SqlDataSource1"
      runat="server"
      DataSourceMode="DataSet"
      ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
      SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
      UpdateCommand="Update Employees SET   
         FirstName=@FirstName,LastName=@LastName,
         Title=@Title WHERE EmployeeID=@EmployeeID"
      OnUpdated="OnDSUpdatedHandler">
  </asp:SqlDataSource>
  <asp:GridView
      id="GridView1"
      runat="server"
      AutoGenerateColumns="False"
      DataKeyNames="EmployeeID"
      AutoGenerateEditButton="True"
      DataSourceID="SqlDataSource1">
      <columns>
          <asp:BoundField HeaderText="First Name" DataField="FirstName" />
          <asp:BoundField HeaderText="Last Name" DataField="LastName" />
          <asp:BoundField HeaderText="Title" DataField="Title" />
      </columns>
  </asp:GridView>

更新以解决您的评论

您的Select * from Dbo.MainAsset, dbo.Model ...从不同表中加载数据,并将其显示为一张大表格。这称为联接。您的选择使用旧的加入语法,而不是新的语法

我不确定我是否理解您的评论:"我询问语法应该如何寻找UpdateCommand。"在您的更新中,您是否想更新所有3个表(MainAsset,Model和Hardware)中的值?如果是这种情况,我们需要了解您网格中显示的单列。您可以查看此问题或在此更新中加入说明,以更好地了解JOIN的更新。

更新2的语法for UpdateCommand

  1. 我如何制作自定义更新?
  2. 我将如何处理更新一列,例如" mainAsset.site"
  3. 如果下拉列表更改,如何更新记录?

首先,您需要知道SQL Server中的正常更新语句的样子:

UPDATE MainAsset
    SET site= NewValueForSite
        ,teacher = 'Dr. Seuss'
    WHERE rowId = FilterValue

要创建一个自定义更新命令,您可以编写所需的SQL,然后将其分配/将其传递到SQLDATASOURCE的属性UpdateCommand。您可以执行以下操作(假设PK代表主键并标识一行):

 <asp:SqlDataSource
      id="SqlDataSource1"
      // ... see above          
      UpdateCommand="Update MainAsset SET   
         site=@site
         ,teacher=@teacher,
         WHERE pk=@pk"
      OnUpdated="OnDSUpdatedHandler">
  </asp:SqlDataSource>

关于您的第三个问题,我想指出您的问题:

<asp:DropDownList ID="ddlSite" runat="server"  
   AutoPostBack="True" 
   OnSelectedIndexChanged="SelectionHasChanged"
   DataSourceID="SqlDataSource1" DataTextField="site"
   DataValueField="pk" AppendDataBoundItems="true">

长话短说,这是我所做的:

有问题的DDL:

            <asp:TemplateField HeaderText="site" SortExpression="site">
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlSites" runat="server" AutoPostBack="True" 
                        DataSourceID="RetrieveSiteSQL" DataTextField="Sites" DataValueField="Sites" 
                        SelectedValue='<%# Bind("site") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>

我发现我的retrievesitesql并不是需要更新命令的一个,而是我单击" Update"(在编辑模板中)时更新的" Main" SQL数据源。弄清楚updateCommand =" update mainasset ..."语句必须看起来类似于:

UpdateCommand="UPDATE MainAsset SET [site] = @Site WHERE [pk] = @pk">

我现在有一个不同的问题,但这是一个不同的问题,所以我将在此网站上发布一个不同的问题。

感谢您的帮助。

最新更新