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.
我试图在数据网格视图*问数据库中的所有记录,具体取决于通过具有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();
}
}
}
1 个解决方案
#1
10
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"
在你的情况下,columnname将是“user_name”或“user_type”
this problem occurs, because SQL-Type text is !not compatible for comparison with strings!
出现此问题,因为SQL-Type文本是!不兼容与字符串比较!
as soon as you change the type from text to varchar() the operation should work
只要将类型从text更改为varchar(),操作就应该起作用
#1
10
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"
在你的情况下,columnname将是“user_name”或“user_type”
this problem occurs, because SQL-Type text is !not compatible for comparison with strings!
出现此问题,因为SQL-Type文本是!不兼容与字符串比较!
as soon as you change the type from text to varchar() the operation should work
只要将类型从text更改为varchar(),操作就应该起作用