过滤数据表 - @ 后缺少操作数
Filtering Datatable -Missing operand after @
我正在使用以下代码过滤数据表以显示包含我的电子邮件的元组 address.But 我不断收到 Missing Operand after @
错误。
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand mycommand = new SqlCommand("select * from mytable",connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email = "+value;
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
试试这个。
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
var query = "select * from mytable WHERE email = 'me@live.com'";
SqlCommand mycommand = new SqlCommand(query,connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
DataView dv = new DataView(dt);
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
试试这个,如果有效请告诉我
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand mycommand = new SqlCommand("select * from mytable",connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email LIKE %'" + value + "'%";
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
这里:
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email = "+value;
你正在做的是:
DataView dv = new DataView(dt);
dv.RowFilter = "email = me@live.com";
因此您缺少用于括起文字字符串的撇号。你应该改用这个:
string value = "'me@live.com'";
所以得到的过滤器是:
dv.RowFilter = "email = 'me@live.com'";
由于您可能从其他地方收到电子邮件(而不是硬编码在您的文件中),如果您使用的是 C# 6.0 或更高版本,您可以改为这样做:
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = $"email = '{value}'";
为什么要在从数据库中获取全部数据后进行过滤?只需在查询本身中对其进行过滤即可:
select * from mytable where email = 'me@live.com'
我正在使用以下代码过滤数据表以显示包含我的电子邮件的元组 address.But 我不断收到 Missing Operand after @
错误。
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand mycommand = new SqlCommand("select * from mytable",connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email = "+value;
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
试试这个。
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
var query = "select * from mytable WHERE email = 'me@live.com'";
SqlCommand mycommand = new SqlCommand(query,connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
DataView dv = new DataView(dt);
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
试试这个,如果有效请告诉我
using (SqlConnection connection = new SqlConnection(conn))
{
connection.Open();
SqlCommand mycommand = new SqlCommand("select * from mytable",connection);
// SqlDataReader dataReader = mycommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(mycommand.ExecuteReader());
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email LIKE %'" + value + "'%";
dataGridView1.DataSource = dv.ToTable();
// dataGridView1.DataSource = dt;
}
这里:
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = "email = "+value;
你正在做的是:
DataView dv = new DataView(dt);
dv.RowFilter = "email = me@live.com";
因此您缺少用于括起文字字符串的撇号。你应该改用这个:
string value = "'me@live.com'";
所以得到的过滤器是:
dv.RowFilter = "email = 'me@live.com'";
由于您可能从其他地方收到电子邮件(而不是硬编码在您的文件中),如果您使用的是 C# 6.0 或更高版本,您可以改为这样做:
string value = "me@live.com";
DataView dv = new DataView(dt);
dv.RowFilter = $"email = '{value}'";
为什么要在从数据库中获取全部数据后进行过滤?只需在查询本身中对其进行过滤即可:
select * from mytable where email = 'me@live.com'