Text data types and varchar are incompatible in equal operator

I am trying to access all the records from the database in the form of a data grid depending on the type of user login to the system through a form containing 2 text fields for the username and password, respectively, as well as for the records of the submit button. But the code I wrote gives me the following error: text data types and varchar are incompatible in the equal 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(); } } } 
+4
source share
1 answer

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 the column name will be "user_name" or "user_type"

this problem occurs because the text is SQL-Type ! incompatible for comparison with strings!

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

+10
source

All Articles