数据类型text和varchar在等于运算符中不兼容

我试图在数据网格视图上访问数据库中的所有记录,具体取决于通过具有2个用于user_name和密码的文本框的表单登录的用户类型,并显示提交按钮记录。 但是我编写的代码给出了以下错误:数据类型text和varchar在等于运算符中是不兼容的。 请建议更改。

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(); } } } 

这是一个简单的数据库问题。

在数据库生成脚本中更改:

 columnname text NULL, 

至:

 columnname varchar(number of chars) NULL, 

在你的情况下,columnname将是“user_name”或“user_type”

出现此问题,因为SQL-Type文本是!不兼容与字符串比较!

只要将类型从text更改为varchar(),操作就应该起作用