private void Button1_Click(object sender, System.EventArgs e)
{
string connString="Data Source=pki ;user=taxrauser;password=taxrauser";
OracleConnection oracleConnection=new OracleConnection(connString);
oracleConnection.Open();
OracleCommand cmd=oracleConnection.CreateCommand();
string sqlstring="select sum(sale_all),sum(sale_new),sum(sale_updated),sum(sale_free) from lc_dailymanage";
if (taxju != "0")
{
sqlstring += " and tax_ju= '"+taxju+"'";
}
if (taxsuo != "0")
{
sqlstring += " and tax_name= '"+taxsuo+"'";
}
if (Opera != "0")
{
sqlstring += " and user_name='"+Opera+"'";
}
if (STime != "")
{
sqlstring += " and time>='"+STime+"'";
}
if (PTime != "")
{
sqlstring += " and time<= '"+PTime+"'";
}
cmd.CommandText=sqlstring;
OracleDataReader odr=cmd.ExecuteReader();
while(odr.Read())
this.temp=odr.GetOracleNumber(0).ToString();
this.temp1=odr.GetOracleNumber(1).ToString();
this.temp2=odr.GetOracleNumber(2).ToString();
this.temp3=odr.GetOracleNumber(3).ToString();
}
odr.Close();
}
错误提示:
ORA-00933: SQL 命令未正确结束
參考答案:Select的语法是
Select ColumnNames From TableName Where Condition...
你的程序中的sqlstring中始终没有Where
sqlstring += " and tax_ju= '"+taxju+"'";
这种形式就不太好,解决方法是定义一个数组string [] Conditions保存条件,具体形式为:
if (条件成立)
Conditions[len++]=Sql中的逻辑表达式
最后采用如下语句加入条件:
if(Conditions.Length!=0){
sqlstring+="Where ";
for (i=0;i<Conditions.Length;i++)
{
if (i!=Conditions.Length)
{
sqlstring+=Conditions[i]+" And ";
}
else
sqlstring+=Conditions[i];
}
}
}
比较笨,但是有效且不会出错