代码如下                string COnnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + textBox_ip.Text + ")(PORT=1521))(CONNECT_DATA=(SID=orcl)));User Id=111;Password=111";
                OracleConnection conn = new OracleConnection(COnnectionString);
                conn.Open();
                OracleCommand cmd = new OracleCommand("select DAY_COMPLETE_DATE as 日期,WORK_CONTENT as 日清 from TP_DAY_COMPLETE where DAY_COMPLETE_DATE between to_date('" + Time1.Value.ToShortDateString() + "','yyyy-MM-dd') and to_date('" + Time2.Value.ToShortDateString() + "','yyyy-MM-dd') and PERSON_ID=  " + Id_textBox.Text + " ", conn);
                OracleDataAdapter oda = new OracleDataAdapter();
                oda.SelectCommand = cmd;
                System.Data.DataTable dt = new System.Data.DataTable();
                oda.Fill(dt);
                this.dataGridView1.DataSource = dt;
                conn.Close();
      本机上运行没问题,程序放在别的电脑上就提示ORA-0091错误,不解,求大神。

解决方案 »

  1.   

    哪裡報錯,conn.open()? 還是oda.Fill(dt);?
      

  2.   

    因为是生成好了才copy过去用的,所以具体哪里我也在想。。迷茫ing
      

  3.   

    执行查询后出这个错误。可能是text_box里的值。不知道怎样修改。
      

  4.   


    --改成這樣子,應是日期格式的問題
    OracleCommand cmd = new OracleCommand("select DAY_COMPLETE_DATE as 日期,WORK_CONTENT as 日清 from TP_DAY_COMPLETE where DAY_COMPLETE_DATE between to_date('" + Time1.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and to_date('" + Time2.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and PERSON_ID=  " + Id_textBox.Text + " ", conn);
      

  5.   


    在本机上运行没有任何问题,copy到别的机器上运行才有问题。
    我把日期全部删除了,where后面只留PERSON_ID=  " + Id_textBox.Text + " 依然是报0091
      

  6.   

    那你直接賦個有記錄的ID值試吧,如果還報錯,報sql語句改為select 1 from dual試下
      

  7.   

    不是吧,那你Id_textBox.Text 的值是不是數字呀,要不就加個Id_textBox.Text.Trim()
    還有後面的 " + Id_textBox.Text.Trim(), conn);// + " ", 把這個去掉,沒用到的
      

  8.   

    这样吗?                OracleCommand cmd = new OracleCommand("select DAY_COMPLETE_DATE as 日期,WORK_CONTENT as 日清 from TP_DAY_COMPLETE where DAY_COMPLETE_DATE between to_date('" + Time1.Value.ToShortDateString() + "','yyyy-MM-dd') and to_date('" + Time2.Value.ToShortDateString() + "','yyyy-MM-dd') and PERSON_ID=  " + Id_textBox.Text.Trim() + " ", conn);
    改成这样了还是不行。
      

  9.   


    //斷點調試下,把sql的值打印出來
    string sql="select DAY_COMPLETE_DATE as 日期,WORK_CONTENT as 日清 from TP_DAY_COMPLETE where DAY_COMPLETE_DATE between to_date('" + Time1.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and to_date('" + Time2.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and PERSON_ID= " + Id_textBox.Text.Trim();
    OracleCommand cmd = new OracleCommand(sql, conn);
      

  10.   

    日期没有问题,我把Id_textBox.Text用数字代替查询出就是正常的,
      

  11.   

    如果你确实不是时间的问题,试试下面的语句
    "select *
       from TP_DAY_COMPLETE 
      where PERSON_ID=TO_NUMBER( '" + Id_textBox.Text + "') "TO_NUMBER是把字符串转换为数字。不过还是建议你使用databinding,无论对程序的可维护性,还是oracle的性能都有好处