2011-06-14 90 views
0

我试图根据在文本框中输入像这样试图从表

String sql [email protected]" SELECT member_Id FROM members where (member_Firstname,'',member_Lastname) ="+tbMemberName.Text; 

如何才能做到这一点从文本数据库获得MEMBERID的MEMBERID?

+0

打印的最终查询是什么?你有什么错误?这是什么在哪里(member_Firstname,'',member_Lastname) – zod 2011-06-14 20:45:46

+0

我想从数据库中获取成员身份,其中membername在文本框中输入但在成员表中我有两列成员名称第一个是成员名字和另一个是成员姓氏。你会建议上述语法是合适的one.I使用MYSQL作为数据库 – user682417 2011-06-14 20:52:03

+0

什么值输入到'文本框'?名字和姓氏? – 2011-06-14 20:53:23

回答

0

试试这个:

String sql [email protected]" SELECT member_Id FROM members where CONCAT(member_Firstname,'',member_Lastname) = '"+tbMemberName.Text+"'"; 

此外,这是容易受到SQL注入。

+0

会给这个 – user682417 2011-06-14 20:59:24

+0

@ p.campbell任何想法,你是对的,谢谢。编辑答案。 – 2011-06-14 21:55:11

0

由于安全性和性能方面的原因,我个人会在编译查询之前先将之前的成员名称拆分为。现在,我不熟悉您使用调用此查询的语言,但我会制定的东西,希望能是有意义的,无论它的愚蠢:

String sql [email protected]" SELECT member_Id FROM members WHERE member_Lastname = "+safely_escaped(tbMembername.Last.Text)+" AND member_Firstname = "+safely_escaped(tbMembername.First.Text)+" 

这将允许进行更精确的分析在将它插入到查询之前的名称,它将允许您使用索引(这对任何以前显示的示例都是不可能的)。需要说明的是,在这种情况下,索引最有效的将是INDEX(member_Lastname,member_Firstname)。

0

如果您正在编写C#,正如您所评论的那样,您需要开始使用参数来避免SQL注入。

string getMember= @"SELECT member_Id FROM members 
        WHERE member_Firstname like @userText 
        OR member_Lastname like @userText;"; 

MySqlCommand m = new MySqlCommand(getMember); 
m.Parameters.AddWithValue("@userText", tbMemberName.Text + "%"); 

var reader = m.ExecuteReader();