9

我有一个问题,我不知道如何解决它。

我在数据库中有一个简单的表

CREATE TABLE [dbo].[home] (
    [Id]   INT   NOT NULL,
    [text] NTEXT NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我在 Visual Studio 2012 中使用 FormView,FormView 与数据库的 Home 表连接,并且有编辑/更新/删除选项。

问题是当我尝试更新 te 数据库中的文本时出现错误

The data types ntext and nvarchar are incompatible in the equal to operator.

有点帮助请..

这是我用来在数据库中编写的代码:

    <%@ Page Title="" Language="C#" MasterPageFile="~/admin/adminmaster.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="admin_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:FormView ID="FormView1" runat="server" DataKeyNames="Id" DataSourceID="SqlDataSource1">
        <EditItemTemplate>
            text:
            <asp:TextBox Text='<%# Bind("text") %>' runat="server" ID="textTextBox" /><br />
            Id:
            <asp:Label Text='<%# Eval("Id") %>' runat="server" ID="IdLabel1" /><br />
            <asp:LinkButton runat="server" Text="Update" CommandName="Update" ID="UpdateButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="UpdateCancelButton" CausesValidation="False" />
        </EditItemTemplate>
        <InsertItemTemplate>
            text:
            <asp:TextBox Text='<%# Bind("text") %>' runat="server" ID="textTextBox" /><br />
            Id:
            <asp:TextBox Text='<%# Bind("Id") %>' runat="server" ID="IdTextBox" /><br />
            <asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" />
        </InsertItemTemplate>
        <ItemTemplate>
            text:
            <asp:Label Text='<%# Bind("text") %>' runat="server" ID="textLabel" /><br />
            Id:
            <asp:Label Text='<%# Eval("Id") %>' runat="server" ID="IdLabel" /><br />
            <asp:LinkButton runat="server" Text="Edit" CommandName="Edit" ID="EditButton" CausesValidation="False" />&nbsp;<asp:LinkButton runat="server" Text="Delete" CommandName="Delete" ID="DeleteButton" CausesValidation="False" />&nbsp;<asp:LinkButton runat="server" Text="New" CommandName="New" ID="NewButton" CausesValidation="False" />
        </ItemTemplate>
    </asp:FormView>
    <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConflictDetection="CompareAllValues" ConnectionString='<%$ ConnectionStrings:ConnectionString_SQLServer %>' DeleteCommand="DELETE FROM [home] WHERE [Id] = @original_Id AND [text] = @original_text" InsertCommand="INSERT INTO [home] ([Id], [text]) VALUES (@Id, @text)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [Id], [text] FROM [home]" UpdateCommand="UPDATE [home] SET [text] = @text WHERE [Id] = @original_Id AND [text] = @original_text">
        <DeleteParameters>
            <asp:Parameter Name="original_Id" Type="Int32"></asp:Parameter>
            <asp:Parameter Name="original_text" Type="String"></asp:Parameter>
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="Id" Type="Int32"></asp:Parameter>
            <asp:Parameter Name="text" Type="String"></asp:Parameter>
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="text" Type="String"></asp:Parameter>
            <asp:Parameter Name="original_Id" Type="Int32"></asp:Parameter>
            <asp:Parameter Name="original_text" Type="String"></asp:Parameter>
        </UpdateParameters>
    </asp:SqlDataSource>
</asp:Content>

这就是我想要获取文本形式 DB 并将其写入 Label 的地方:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


            string DatabaseConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString_SQLServer"].ConnectionString;

            string text = "SELECT text FROM home WHERE id=1";

            using (SqlConnection conn = new SqlConnection(DatabaseConnectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(text, conn);
                box1_text.Text = (string)cmd.ExecuteScalar();

            }
        }


}
4

5 回答 5

5

可以试试LIKE

例如

SELECT * FROM cor.Computer WHERE description LIKE 'HP NOTEBOOK'
于 2017-08-10T06:28:14.190 回答
4

在您的查询中,围绕任何 ntext 字段进行转换以将它们转换为 nvarchar(max)

例如:转换(nvarchar(最大),nTextField)

于 2014-01-22T20:55:03.473 回答
0

为避免出现上述异常,请在 sql server 中执行以下查询-

Alter table home 
Alter column text nvarchar(max)
GO

我希望我的解决方案对你有用。

于 2015-07-02T11:31:45.897 回答
0

如果 DBeaver 发生这种情况,如果您在“保存”失败后按“取消”,则会出现该行,无论如何都会保存该行。我想这是软件中的一个错误。

于 2018-11-15T18:44:59.560 回答
-1
drrr.Close();

//SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["rashmi"].ToString());

SqlCommand cmd1 = new SqlCommand("insert into registration(fullname,address,contact,village,city,district,state,email,password) values(@fullname,@address,@contact,@village,@city,@district,@state,@email,@password)");
con.Open();
cmd1.Connection = con;
cmd1.CommandType = CommandType.Text;

cmd1.Parameters.AddWithValue("@fullname", fullname.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@address", address.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@contact", contact.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@village", village.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@city", city.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@district", district.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@state", state.Text.Trim().ToString());
//cmd1.Parameters.AddWithValue("@crop", crop.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@email", email.Text.Trim().ToString());
cmd1.Parameters.AddWithValue("@password", password.Text.Trim().ToString());

int row;
try
{
    row = cmd1.ExecuteNonQuery();
    if (row > 0)
    {
        // lbltxt.Text = "<b>data sucess fully enter</b>";
        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Registration Successfully');window.location ='Registration.aspx';", true);

        //Response.Write("data sucess fully enter");
        // Response.Redirect("login.aspx");
    }
    else
    {
        lbltxt.Text = "<b>data sucess fully enter</b>";
        lbltxt.ForeColor = System.Drawing.Color.DarkSlateBlue;
    }

    //else
    //{
    //    Response.Write("data not insert");
    //}
}
catch (Exception)
{
    throw;
}
finally
{
    if (con.State == ConnectionState.Open)
        con.Close();
}
于 2020-12-02T08:23:22.660 回答