我在用vs2005C#语言开发一管理系统,在开发通用查询系统时,想实现动态查询Oracle数据库中不同的字段,但是字段的类型各不相同,于是我想到用以下的方法实现: if (FieldType1 == "VARCHAR2")
{
conditionValue1 = "'%" + textBox1.Text.Trim() + "%'";
}
else if (FieldType1 == "NUMBER")
{
conditionValue1 = textBox1.Text.Trim();
}
else if (FieldType1 == "DATE")
{
conditionValue1 = textBox1.Text;
}
if (textBox1.Text != "")
{
if (checkBox_升序1.Checked)
{
order1 = "order by "+ FieldName1+" asc";
}
if (checkBox_降序1.Checked)
{
order1 = "order by " + FieldName1 + " desc";
}
sql = "where " + FieldName1 + " " + comparel1 + " " + conditionValue1+ " "+order1+"";
}
if ((textBox1.Text != "") && (textBox2.Text != ""))
{
if ((checkBox_升序1.Checked) && (checkBox_升序2.Checked))
{
order2 = "order by " + FieldName1 + "asc ," + FieldName2 + " asc ";
}
if ((checkBox_降序1.Checked) && (checkBox_升序2.Checked))
{
order2 = "order by " + FieldName1 + " desc," + FieldName2 + " asc";
}
if ((checkBox_降序2.Checked) && (checkBox_升序1.Checked))
{
order2 = "order by " + FieldName2 + " desc," + FieldName1 + " asc";
}
if ((checkBox_降序2.Checked) && (checkBox_降序1.Checked))
{
order2 = "order by " + FieldName2 + " desc," + FieldName1 + "desc";
} sql = "where " + FieldName1 + " " + comparel1 + "" + conditionValue1 + "" + logic1 + " " + FieldName2 + " " + comparel2 + "" + conditionValue2 + "" + order2 + "";
}
可是这样执行的结果出现了以下问题:
1.FieldName1 和 FieldName2 都是Number类型时出错ora-01722:无效数字或者ora-00920:无效的关系运算符这两个错误;
2.FieldName1 和 FieldName2 的类型是DATE时输入数据库中存在的数据,查询的结果却显示无!
请各位高手们帮忙想想办法,不胜感激!
{
conditionValue1 = "'%" + textBox1.Text.Trim() + "%'";
}
else if (FieldType1 == "NUMBER")
{
conditionValue1 = textBox1.Text.Trim();
}
else if (FieldType1 == "DATE")
{
conditionValue1 = textBox1.Text;
}
if (textBox1.Text != "")
{
if (checkBox_升序1.Checked)
{
order1 = "order by "+ FieldName1+" asc";
}
if (checkBox_降序1.Checked)
{
order1 = "order by " + FieldName1 + " desc";
}
sql = "where " + FieldName1 + " " + comparel1 + " " + conditionValue1+ " "+order1+"";
}
if ((textBox1.Text != "") && (textBox2.Text != ""))
{
if ((checkBox_升序1.Checked) && (checkBox_升序2.Checked))
{
order2 = "order by " + FieldName1 + "asc ," + FieldName2 + " asc ";
}
if ((checkBox_降序1.Checked) && (checkBox_升序2.Checked))
{
order2 = "order by " + FieldName1 + " desc," + FieldName2 + " asc";
}
if ((checkBox_降序2.Checked) && (checkBox_升序1.Checked))
{
order2 = "order by " + FieldName2 + " desc," + FieldName1 + " asc";
}
if ((checkBox_降序2.Checked) && (checkBox_降序1.Checked))
{
order2 = "order by " + FieldName2 + " desc," + FieldName1 + "desc";
} sql = "where " + FieldName1 + " " + comparel1 + "" + conditionValue1 + "" + logic1 + " " + FieldName2 + " " + comparel2 + "" + conditionValue2 + "" + order2 + "";
}
可是这样执行的结果出现了以下问题:
1.FieldName1 和 FieldName2 都是Number类型时出错ora-01722:无效数字或者ora-00920:无效的关系运算符这两个错误;
2.FieldName1 和 FieldName2 的类型是DATE时输入数据库中存在的数据,查询的结果却显示无!
请各位高手们帮忙想想办法,不胜感激!
做的好一点的话,可以加上输入数据验证最后都是得到一条SQL