Пример #1
0
        /// <summary>
        /// Возвращает интерфейс коммуникатора в зависимости от строки подключения
        /// </summary>
        private ICommunicator GetCommunicator()
        {
            if (_communicator == null)
            {
                // если коммуникатор еще не создан
                ConnStrHelper connStrHelper = new ConnStrHelper(_connectionString);

                // определяем протокол связи
                switch (connStrHelper[1])
                {
                case "rs":
                    _communicator = new SerialCommunicator(connStrHelper[2],
                                                           Convert.ToInt32(connStrHelper[3]));
                    break;

                case "tcp":
                    _communicator = new TcpCommunicator(connStrHelper[2],
                                                        Convert.ToInt32(connStrHelper[3]));
                    break;

                default:
                    throw new InvalidOperationException(
                              string.Format("Протокол {0} не поддерживается.",
                                            connStrHelper[1]));
                }

                return(_communicator);
            }
            else
            {
                // ссылка на ранее созданный интерфейс коммуникатора
                return(_communicator);
            }
        }
    public static void Import_Excel_File(string FilePath, string Extension, string TableName, string TablePk, string ProjIdField, string ProjIdValue)
    {
        string conStr = "";

        switch (Extension)
        {
        case ".xls":     //Excel 97-03
            conStr = ConnStrHelper.Excel03ConString();
            break;

        case ".xlsx":     //Excel 07
            conStr = ConnStrHelper.Excel07ConString();
            break;

        default:
            return;     // not supported
        }

        conStr = String.Format(conStr, FilePath, "Yes");
        OleDbConnection  connExcel = new OleDbConnection(conStr);
        OleDbCommand     cmdExcel  = new OleDbCommand();
        OleDbDataAdapter oda       = new OleDbDataAdapter();
        DataTable        dt        = new DataTable();

        cmdExcel.Connection = connExcel;

        //Get the name of First Sheet
        connExcel.Open();
        DataTable dtExcelSchema;

        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();

        connExcel.Close();

        //Read Data from First Sheet
        connExcel.Open();
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
        oda.SelectCommand    = cmdExcel;
        oda.Fill(dt);
        connExcel.Close();

        bool has_pj_id = string.IsNullOrEmpty(ProjIdField) ? false : true;

        bool   first_col = true;
        string sql       = "INSERT " +
                           (string.IsNullOrEmpty(TablePk) ? "" : string.Format(@"/*+ IGNORE_ROW_ON_DUPKEY_INDEX({0},{1}) */", TableName, TablePk)) +
                           " INTO " + TableName + " (";

        // add proj_id field
        if (has_pj_id)
        {
            sql      += ProjIdField;
            first_col = false;
        }

        foreach (DataColumn col in dt.Columns)
        {
            if (!first_col)
            {
                sql += ",";
            }
            else
            {
                first_col = false;
            }

            sql += col.ColumnName;
        }

        sql      += ") VALUES (";
        first_col = true;

        // add proj_id field
        if (has_pj_id)
        {
            sql      += ":" + ProjIdField;
            first_col = false;
        }

        foreach (DataColumn col in dt.Columns)
        {
            if (!first_col)
            {
                sql += ",";
            }
            else
            {
                first_col = false;
            }

            sql += ":" + col.ColumnName;
        }

        sql += ")";

        using (OracleConnection conn = WebTools.GetIpmsConnection()) // will open connection too
        {
            OracleCommand cmd = new OracleCommand(sql, conn);

            foreach (DataRow row in dt.Rows)
            {
                cmd.Parameters.Clear();

                // add proj_id value
                if (has_pj_id)
                {
                    OracleParameter proj_par = new OracleParameter(ProjIdField, ProjIdValue);
                    cmd.Parameters.Add(proj_par);
                }

                foreach (DataColumn col in dt.Columns)
                {
                    string col_val = row[col].ToString();

                    if (col.ColumnName.ToUpper().Contains("DATE") && !string.IsNullOrEmpty(col_val))
                    {
                        DateTime value;
                        if (DateTime.TryParse(col_val, out value))
                        {
                            col_val = value.ToString("dd-MMM-yyyy");
                        }
                        else
                        {
                            col_val = "";
                        }
                    }

                    OracleParameter parm = new OracleParameter(col.ColumnName, col_val);
                    cmd.Parameters.Add(parm);
                }
                cmd.ExecuteNonQuery();
            }

            cmd.Dispose();
        }

        //Bind Data to GridView
        //GridView1.Caption = Path.GetFileName(FilePath);
        //jointsGridView.DataSource = dt;
        //jointsGridView.DataBind();
    }