Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I have a problem and i dont know how to fix it.

I have a simple table in database

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

I`m using FormView in visual studio 2012, The FormView is connected with the Home table of the database and there is edit/update/delete options on.

The problem is that when I`m trying to Update the text in te database there is an error

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

A little help please..

This is the code I use to write in the DB :

    <%@ 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>

And this is where I want to get the text form DB and write it in to 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();

            }
        }


}
like image 834
user3224399 Avatar asked Jan 22 '14 20:01

user3224399


2 Answers

Can Try with LIKE

For Example

SELECT * FROM cor.Computer WHERE description LIKE 'HP NOTEBOOK'
like image 188
Metin Atalay Avatar answered Nov 15 '22 13:11

Metin Atalay


In your query put a convert around any ntext fields to convert them to nvarchar(max)

for example: convert(nvarchar(max), nTextField)

like image 28
Batty McBat Avatar answered Nov 15 '22 12:11

Batty McBat