Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The data types text and varchar are incompatible in the equal to operator

I am trying to access all the records from database on a data grid view depending upon the type of user logging in through a form having 2 text-boxes for user_name and password respectively and on submit button records are displayed. But the code I have written is giving me the following error: The data types text and varchar are incompatible in the equal to operator. Please suggest changes.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;


namespace Login_form
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {



        }

        private void button1_Click(object sender, EventArgs e)
        {

            string str = ConfigurationSettings.AppSettings["constring"].ToString();
            SqlConnection sqlcon = new SqlConnection(str);


            try
            {
                sqlcon.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }


            SqlCommand sqlcmd = new SqlCommand("select user_type from employee where user_name='" + textBox1.Text + "'and pwd= '" + textBox2.Text + "' ;", sqlcon);


            SqlDataReader myReader = sqlcmd.ExecuteReader();

            string user_type=string.Empty;

            while(myReader.Read())
            {
            user_type= myReader["user_type"].ToString();
            }

            sqlcon.Close();



            sqlcon.Open();
            SqlCommand sqlcmd2 = new SqlCommand("select * from employee where user_type= '" +user_type + "'", sqlcon);
            SqlDataReader myReader2 = sqlcmd2.ExecuteReader();

          /*  SqlDataAdapter sqladapter = new SqlDataAdapter(sqlcmd2);
            DataSet ds = new DataSet();
            sqladapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];*/

            DataTable dt = new DataTable();
            dt.Columns.Add("ID", typeof(string));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Email_ID", typeof(string));
            dt.Columns.Add("Contact", typeof(string));
            dt.Columns.Add("Address", typeof(string));

            while (myReader2.Read())
            {
                DataRow dr = dt.NewRow();
                dr["ID"] = myReader2["ID"];
                dr["Name"] = myReader2["user_name"];
                dr["Email_ID"] = myReader2["Email_ID"];
                dr["Contact"] = myReader2["Contact"];
                dr["Address"] = myReader2["Address"];
                dt.Rows.Add(dr);
            }


            dataGridView1.DataSource = dt;


            sqlcon.Close();
        }

    }
}
like image 342
ankita alung Avatar asked Feb 28 '13 10:02

ankita alung


1 Answers

This is a simple Database Problem.

in the Database generation script change:

columnname text NULL,

to:

columnname varchar(number of chars) NULL,

in your case columnname would be "user_name" or "user_type"

this problem occurs, because SQL-Type text is !not compatible for comparison with strings!

as soon as you change the type from text to varchar() the operation should work

like image 85
Vogel612 Avatar answered Sep 22 '22 19:09

Vogel612