如题!
oracle中的表:tickets ,表中有:ticketnum ,ticketid ,subject 等参数。我在winform中 添加了三个文本框,分别是对ticketnum,ticketid,subject 参数的输入,然后想通过《确定》按钮,按确定后就可以把输入的值插入更新到oracle中的tickets表中。请问各位大虾如何操作!谢谢拉!

解决方案 »

  1.   


    引用在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 文件夹下
    System.Data.OracleClient.dll 类库 ,就可以对Oracle数据库执行插入、删除、更新操作了。
      

  2.   

    ---OracleHelper.cs-----
    1.  public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) {
          OracleCommand cmd = new OracleCommand();
         using (OracleConnection connection = new OracleConnection(connectionString)) {
            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
              int val = cmd.ExecuteNonQuery();
               cmd.Parameters.Clear();
               return val;
            }
         }
    2.  private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] commandParameters) {
     if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = cmdType;
                if (trans != null)
                    cmd.Transaction = trans;
                if (commandParameters != null) {
                    foreach (OracleParameter parm in commandParameters)
                        cmd.Parameters.Add(parm);
                }
            }
    -----调用------
    3.
    private const string SQL_TAKE_INVENTORY = "UPDATE Inventory SET Qty = Qty - :Quantity{0} WHERE ItemId = :ItemId{0}";
    4.
     public void TakeStock(LineItemInfo[] items) {
                int numberOfParameters = 2 * items.Length;
     OracleParameter[] completeOrderParms = new OracleParameter[numberOfParameters];
                StringBuilder finalSQLQuery = new StringBuilder("BEGIN ");
                int index = 0;
                int i = 1;
      foreach (LineItemInfo item in items) {
       ompleteOrderParms[index] = new OracleParameter(":Quantity" + i,OracleType.Number);
       completeOrderParms[index++].Value = item.Quantity;
       completeOrderParms[index] = new OracleParameter(":ItemId" + i, OracleType.Char, 10);
         completeOrderParms[index++].Value = item.ItemId;
        finalSQLQuery.Append(string.Format(SQL_TAKE_INVENTORY, i));
                    finalSQLQuery.Append("; ");
                    i++;
                }
                finalSQLQuery.Append("END;");
                OracleHelper.ExecuteNonQuery (OracleHelper.ConnectionStringInventoryDistributedTransaction, CommandType.Text, finalSQLQuery.ToString(), completeOrderParms);
    }
      

  3.   

     补充,将第一步方法改成(事务型):public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) {
                OracleCommand cmd = new OracleCommand();
                PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
      

  4.   

    在你做的winform项目中,选中【引用】节点,单击鼠标右键 弹出快捷菜单, 然后单点击【添加引用】,在弹出界面中选择【浏览】选项卡,最后引用
    在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 文件夹下 System.Data.OracleClient.dll 类库 就可以对Oracle数据库执行插入、删除、更新操作了。
      

  5.   

     代码如下可以看一下:用OracleConnection连接Oracle
      
      在App.config中配置 <add key="Oracle" value="Data Source=xxx;User ID=xxx;Password=xxx"/>
      
      public System.Data.OracleClient.OracleConnection cnn;
      
      /// <summary>
      /// 打开数据库连接
      /// </summary>
      public void Open()
      {
      cnn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["Oracle"]);
      cnn.Open();
      }
      
      /// <summary>
      /// 打开数据库连接,返回cnn
      /// </summary>
      public OracleConnection OpenCnn()
      {
      cnn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["Oracle"]);
      cnn.Open();
      return(cnn);
      }
      
      /// <summary>
      /// 关闭数据库连接
      /// </summary>
      public void Close()
      {
      cnn.Close();
      }
      
      /// <summary>
      /// 返回DataSet
      /// </summary>
      /// <param name="CmdString"></param>
      /// <param name="TableName"></param>
      /// <returns></returns>
      public DataSet GetDataSet(string CmdString,string TableName)
      {
      Open();
      OracleDataAdapter myDa =new OracleDataAdapter();
      myDa.SelectCommand = new OracleCommand(CmdString,cnn);
      DataSet myDs =new DataSet();
      myDa.Fill(myDs,TableName);
      Close();
      return myDs;
      }
      
      /// <summary>
      /// 返回OleDbDataReader
      /// </summary>
      /// <param name="CmdString"></param>
      /// <returns></returns>
      public OracleDataReader GetDataReader(string CmdString)
      {
      Open();
      OracleCommand myCmd =new OracleCommand(CmdString,cnn);
      OracleDataReader myDr =myCmd.ExecuteReader();
      return myDr;
      }
      
      /// <summary>
      /// 返回影响数据库的行数
      /// </summary>
      /// <param name="CmdString">插入、修改、删除SQL语句</param>
      /// <returns></returns>
      public int ExecuteSQL(string CmdString)
      {
      Open();
      OracleCommand myCmd =new OracleCommand(CmdString,cnn);
      int Cmd =myCmd.ExecuteNonQuery();
      Close();
      return Cmd;
      }
      
      /// <summary>
      /// 邦定DroDownList
      /// </summary>
      /// <param name="DroDList"></param>控件名
      /// <param name="sql"></param>连接字符串
      /// <param name="TableName"></param>表名
      /// <param name="DataTextFd"></param>提供文本内容的数据源字段
      /// <param name="DataValueFd"></param>为列表项提供值的数据源字段
      public void DroList(DropDownList DroDList,string sql,string TableName,string DataTextFd,string DataValueFd)
      {
      Open();
      OracleDataAdapter myDa =new OracleDataAdapter(sql,cnn);
      myDa.SelectCommand.CommandType = CommandType.Text;
      DataSet myDs =new DataSet();
      try
      {
      myDa.Fill(myDs,TableName);
      DroDList.DataSource = myDs.Tables[TableName];
      DroDList.DataTextField = DataTextFd;
      DroDList.DataValueField = DataValueFd;
      DroDList.DataBind();
      }
      catch(Exception e)
      {
      Response.Write(e.Message);
      }
      finally
      {
      Close();
      }
      } 
      

  6.   

    using OracleClient;using(OracleConnection con=new OracleConnection(""))
    {
    using(OracleCommand cmd=new OracleCommand("insert into tb values(:a,:b,:c,....)",con))
    {
    con.open();
    oracleparameter param={
    new oracleparameter(":a",dbtype.varchar),
    new oracleparameter(":b",dbtype.blob),
    ......
    cmd.parameters.add(param[0]);
    cmd.parameters.add(param[1]);
    .....
    cmd.exenonquery();
    messagebox.show("成功!");
    }}
    }
    大概就是这样子了!
      

  7.   

    操作ORACLE当前机器一定要有ORACLE的客户端程序. 再用.NET 的ORACLE库. 不然永远不可能连上.