【问题标题】:Inserting into a database with ASP.NET causes error使用 ASP.NET 插入数据库会导致错误
【发布时间】:2017-08-20 01:31:19
【问题描述】:

我是第一次使用 VS 2017。

我正在尝试将一些值插入数据库。我已经与数据库建立了连接(使用 select 语句检查),但现在我卡在插入部分。

我有一个SqlDataSource 定义为:

<div>
   <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="  <%$ ConnectionStrings:Sphinxx_Conn %>" 
        ProviderName="<%$ ConnectionStrings:Sphinxx_Conn.ProviderName %>"  
        InsertCommand="INSERT INTO &quot;DEMO&quot; (&quot;ID&quot;, &quot;NAME&quot;) VALUES (:ID, :NAME)">
        <InsertParameters>
            <asp:Parameter Name="ID" Type="String" />
            <asp:Parameter Name="NAME" Type="String" />
        </InsertParameters>
   </asp:SqlDataSource>
</div>

现在是下面的sn-p:

 SqlDataSource1.InsertParameters["ID"].DefaultValue = '1'
 SqlDataSource1.InsertParameters["NAME"].DefaultValue = 'John'

下划线'SqlDataSource1.InsertParameters'部分并显示错误:

属性访问必须分配给属性或使用它的值。

我到底做错了什么?

【问题讨论】:

    标签: sql asp.net database vb.net


    【解决方案1】:

    您的代码片段中有 2 个赋值错误。

    1. 您正在设置char 值而不是string,将单引号'values 替换为双引号“。而不是'1' 这样做"1" 与John 相同。
    2. 您还没有使用; 来终止您的语句,因此请在语句末尾添加分号。

    【讨论】:

    • SqlDataSource1.InsertParameters["ID"].DefaultValue = "1"; SqlDataSource1.InsertParameters["NAME"].DefaultValue = "John";用双引号更改代码并不能解决它。仍然得到“财产访问权必须分配给财产或使用其价值”。错误。
    【解决方案2】:

    您正在传递无效数据,因为您使用的是单引号,请改用双引号:

     SqlDataSource1.InsertParameters["ID"].DefaultValue = "1";
     SqlDataSource1.InsertParameters["NAME"].DefaultValue = "John";
    

    附带说明,如果您开始使用 Visual Studio 工作并开始了解 Web 开发,我建议您查看 MVC。 Web 表单是不再受支持的旧技术。

    【讨论】:

    • SqlDataSource1.InsertParameters["ID"].DefaultValue = "1"; SqlDataSource1.InsertParameters["NAME"].DefaultValue = "John";用双引号更改代码并不能解决它。仍然得到“财产访问权必须分配给财产或使用其价值”。错误。
    • 您是否在正确的方法范围内使用此代码?你能显示错误所在的整个代码文件吗?
    • 您需要在代码隐藏文件中添加您的代码,而不是在 aspx 文件中。将其放在 Default.aspx.vb 文件中。
    • &lt;%@ Page aspcompat=true Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="TestDemo._Default" %&gt; &lt;asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"&gt; &lt;% SqlDataSource1.InsertParameters["ID"].DefaultValue = "2" SqlDataSource1.InsertParameters["NAME"].DefaultValue = "John" %&gt; &lt;/asp:Content&gt; 这就是全部。我在问题中给出的
      标记位于 SqlDataSource 的
    • 您能详细说明一下吗?在 .aspx.vb 文件中究竟要写什么?目前内容有Public Class _Default Inherits Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load End Sub Protected Sub DataList1_SelectedIndexChanged(sender As Object, e As EventArgs) End Sub End Class谢谢回复。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签