c#中怎么通过查询条件查询数据库的数据

c#中怎么通过查询条件查询数据库的数据,第1张

需要根据查询条件组装sql查询语句。如:

string sql="select from table where 1=1 ";

if (条件1)

sql+=" and ";

if (条件2)

sql+=" and ";

sql+=" order by ";

在组装sql语句时注意做类型判断而且要对传进来的条件做防sql注入处理,如过滤' -- drop truncate 等字符及关键字。

在组装好sql语句之后就可以利用ADOnet做查询处理。

你这样做输出SS语句调试看看,你会发现你输出的SQL语句有问题!

String ss="SELETE FROM MESSAGE WHERE";

int i=1;char c='"';

if(na!=null)

{ss=ss+"AND 姓名='"+na+"'";i=0;

Systemoutprintln(ss);

}

if(se!="")

{

if(i==0){ss=ss+"AND 性别='"+se+"'";i=0;}

else {ss=ss+"AND 性别='"+se+"'";i=1;}

}

if(xi!="")

{

if(i==0){ss=ss+"AND 系别='"+xi+"'";i=0;}

else {ss=ss+"AND 系别='"+xi+"'";i=1;}

}

if(zh!="")

{

if(i==0){ss=ss+"AND 专业='"+zh+"'";i=0;}

else {ss=ss+"AND 专业='"+zh+"'";i=1;}

}

if(ni!="")

{

if(i==0){ss=ss+"AND 年级='"+ni+"'";}

else {ss=ss+"AND 年级='"+ni+"'";}

}

ss=c+ss+c;

rs=sqlexecuteQuery(ss);

就拿第一个SQL语句来做示范,加入你的na值为abc,输出的SS是 SELETE FROM MESSAGE WHEREAND 姓名= 'abc'

仔细一看就知道SQL语句上很严重的错误 WHERE 后面接了AND关键词

可以这样改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND";

最后使用replaceAll('AND$', ")") 替换最后一个AND字符穿。或者使用字符创截取 去掉最后三个字符(AND)

`

主要就是在where后后使用and逻辑运算符

如:

select from [表名] where 学校='清华大学' and 住址='北京' and 性别='男'

以上为查询,清华大学,住址为北京的所有男性的信息

还可以使用用模糊查询

如:

select from [表名] where 学校 like '%清华大学%' and 住址 like '%北京%' and 性别='男'

以上为查询学校有清华两字,住址中有北京两字的所有男性的信息

要是回答的内容有问题,或认为不妥,请发送百度消息给我,消息内容加上本页网址哦。。

·

看你的代码存在两点疑问,第一,SQL语句构造完成你执行了没,如利用SqlCommand或SqlDataAdapter执行了没?第二,你的SQL语句应该是存在问题,如find+=" and 书名="+bookname这一句,至少是缺少单引号,正确的应该是find+=" and 书名='"+bookname+"'";其它的也类似

给你一个稍微复杂一点的查询,我设计的

看上图我把第一列标签后面的控件命名有规律,比如计划工厂后面文本框是"计划工厂t",Exapt命名为"计划工厂c",后面还隐藏一个listbox,命名为"计划工厂l"。

计划工厂  这个名称本身就是我要查询的表里面包含的字段。

利用这种界面,我要完成一些复杂点的查询:点文本框里的小图标按钮,d出工具,可以输入多条件,条件可以成立为模糊条件(用代替不认识部分),也可以成立为否决条件。

选中Exapt全部否定所成立条件;点击执行按钮,有条件的成立条件,无条件的不成立。

所以这种东西贯穿软件我就不能每个都去做,就只能写一个类文件:

    public class conditionset

    {

        public void load_condit(Panel p)

        {

            foreach (Control ctl in pControls)

            {

                if (ctl is SkinTextBox)

                {

                    SkinTextBox sktxt = (SkinTextBox)pControls[ctlName];

                    ListBox list = (ListBox)pControls[sktxtNameSubstring(0, sktxtNameLength - 1) + "l"];

                    sktxtIconClick += (Object sen, EventArgs ed) =>

                    {

                        ctlcondition toolform = new ctlcondition();

                        if (listItemsCount > 0)

                        {

                            sktxtText = "┅";

                            sktxtReadOnly = true;

                        }

                        foreach (var sm in listItems)

                        {

                            toolformdvRowsAdd(smToString());

                        }

                        toolformShow();

                        toolformcleari += (Object send, EventArgs er) =>

                         {

                             sktxtText = "";

                             sktxtReadOnly = false;

                         };

                        toolformsubm += (Object send, EventArgs er) =>

                        {

                            listItemsClear();

                            foreach (DataGridViewRow dvr in toolformdvRows)

                            {

                                if (ConvertToString(dvrCells[0]Value) != "")

                                {

                                    listItemsAdd(ConvertToString(dvrCells[0]Value));

                                }

                            }

                            sktxtText = "┅";

                            sktxtReadOnly = true;

                        };

                    };

                }

            }

        }

        public string condit(Panel p)

        {

            string master_condition = "";

            foreach (Control ctl in pControls)

            {

                //遍历panel查找条件

                #region 

                string condition = "";

                if (ctl is SkinTextBox)

                {

                    //文本框条件组合

                    #region

                    SkinTextBox sktxt = (SkinTextBox)pControls[ctlName];

                    string ziduan_name = sktxtNameSubstring(0, sktxtNameLength - 1);

                    SkinCheckBox skck = (SkinCheckBox)pControls[ctlNameSubstring(0, ctlNameLength - 1) + "c"];

                    ListBox list = (ListBox)pControls[ctlNameSubstring(0, ctlNameLength - 1) + "l"];

                    if (sktxtText != "")

                    {

                        if (sktxtText == "┅")

                        {

                            string blur_str = "", blur = "";

                            foreach (var itm in listItems)

                            {

                                if (itmToString()Contains(""))

                                {

                                    if (skckChecked == true)

                                    {

                                        blur += " and " + ziduan_name + " not like '" + itmToString()Replace("", "%") + "'";

                                    }

                                    else

                                    {

                                        blur += " or " + ziduan_name + " like '" + itmToString()Replace("", "%") + "'";

                                    }

                                }

                                else

                                {

                                    blur_str += "'" + ConvertToString(itm) + "',";

                                }

                            }

                            string blur_sql = (blur == "")  "" : blurSubstring(4, blurLength - 4)Trim();

                            string in_condition = "", like_condition = "";

                            if (skckChecked == true)

                            {

                                in_condition = ziduan_name + " not in ";

                                like_condition = " and ";

                            }

                            else

                            {

                                in_condition = ziduan_name + " in ";

                                like_condition = " or ";

                            }

                            string contains_sql = (blur_str == "")  "" : in_condition + "(" + blur_strSubstring(0, blur_strLength - 1) + ")";

                            condition = contains_sql + blur_sql;

                            if (blur_sql != "" && contains_sql != "")

                            {

                                condition = contains_sql + like_condition + blur_sql;

                            }

                            else

                            {

                                condition = contains_sql + blur_sql;

                            }

                        }

                        else

                        {

                            if (!sktxtTextContains(""))

                            {

                                if (skckChecked == true)

                                {

                                    condition = ziduan_name + "<>'" + sktxtText + "'";

                                }

                                else

                                {

                                    condition = ziduan_name + "='" + sktxtText + "'";

                                }

                            }

                            else

                            {

                                if (skckChecked == true)

                                {

                                    condition = ziduan_name + " not like '" + sktxtTextReplace("", "%") + "'";

                                }

                                else

                                {

                                    condition = ziduan_name + " like '" + sktxtTextReplace("", "%") + "'";

                                }

                            }

                        }

                    }

                    #endregion

                }

                if (ctl is SkinDateTimePicker)

                {

                    //日期条件组合

                    #region

                    if (ctlNameSubstring(ctlNameLength - 1, 1) != "t")

                    {

                        SkinDateTimePicker skdate_sta = (SkinDateTimePicker)pControls[ctlName];

                        SkinDateTimePicker skdate_end = (SkinDateTimePicker)pControls[ctlName + "t"];

                        if (skdate_statext != "")

                        {

                            if (skdate_endtext == "")

                            {

                                condition = skdate_staName + "='" + skdate_statext + "'";

                            }

                            else

                            {

                                condition = skdate_staName + ">='" + skdate_statext + "' and " + skdate_staName + "<='" + skdate_endtext + "'";

                            }

                        }

                    }

                    #endregion

                }

                master_condition += (condition == "")  "" : "(" + condition + ") and ";

                #endregion //遍历panel查找条件

            }

            string condition_sql = (master_condition == "")  "" : master_conditionSubstring(0, master_conditionLength - 5);

            return condition_sql;

        }

    }

工具用一个窗体代替:

    public partial class condition : Form

    {

        public condition()

        {

            InitializeComponent();

        }

        public event EventHandler subm;

        public event EventHandler cleari;

        private void submit_Click(object sender, EventArgs e)

        {

            subm(sender, e);

            thisDispose();

        }

        private void clearit_Click(object sender, EventArgs e)

        {

            thisDispose();

            dvRowsClear();

            cleari(sender, e);

        }

    }

当我们执行多条件的时候就等于拼接条件

[例]设教学数据库中有3个关系:

学生关系S(SNO,SNAME,AGE,SEX)

学习关系SC(SNO,CNO,GRADE)

课程关系C(CNO,CNAME,TEACHER)

下面用关系代数表达式表达每个查询语句。

(1) 检索学习课程号为C2的学生学号与成绩。

πSNO,GRADE(σ CNO='C2'(SC))

(2) 检索学习课程号为C2的学生学号与姓名

πSNO,SNAME(σ CNO='C2'(SSC))

由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影 *** 作。

此查询亦可等价地写成:

πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))

这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。

(3)检索选修课程名为MATHS的学生学号与姓名。

πSNO,SANME(σ CNAME='MATHS'(SSCC))

(4)检索选修课程号为C2或C4的学生学号。

πSNO(σ CNO='C2'∨CNO='C4'(SC))

(5) 检索至少选修课程号为C2或C4的学生学号。

π1(σ1=4∧2='C2'∧5='C4'(SC×SC))

这里(SC×SC)表示关系SC自身相乘的乘积 *** 作,其中数字1,2,4,5都为它的结果关系中的属性序号。

可以这样:根据判断传入参数是否为空格或null来判断是否有这个查询条件,来拼凑出不同的sql语句,例如

StringBuffer sb = new StringBuffer();

sbappend("select from a where 1=1");

if(!""equals("a") || null != a){

sbappend(" and a = " + a);

}

就像这样来根据不同条件查询

以上就是关于c#中怎么通过查询条件查询数据库的数据全部的内容,包括:c#中怎么通过查询条件查询数据库的数据、Java中数据库实现多条件查询(条件是不确定的,可以是一个,两个,三个,四个,五个)!、怎样在SQL数据库中实现多条件查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9315199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存