/// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(Stock5MinInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update Stock5MinInfo set ");
            strSql.Append("StockCode=@StockCode,");
            strSql.Append("Time=@Time,");
            strSql.Append("[open]=@open,");
            strSql.Append("[close]=@Close,");
            strSql.Append("High=@High,");
            strSql.Append("Low=@Low,");
            strSql.Append("Volume=@Volume,");
            strSql.Append("Turnover=@Turnover,");
            strSql.Append("UpNum=@UpNum,");
            strSql.Append("DownNum=@DownNum");
            strSql.Append(" where id=@id");
            SqlParameter[] parameters =
            {
                new SqlParameter("@StockCode", SqlDbType.NVarChar,  50),
                new SqlParameter("@Time",      SqlDbType.DateTime),
                new SqlParameter("@open",      SqlDbType.Decimal,    9),
                new SqlParameter("@Close",     SqlDbType.Decimal,    9),
                new SqlParameter("@High",      SqlDbType.Decimal,    9),
                new SqlParameter("@Low",       SqlDbType.Decimal,    9),
                new SqlParameter("@Volume",    SqlDbType.NVarChar,  50),
                new SqlParameter("@Turnover",  SqlDbType.NVarChar,  50),
                new SqlParameter("@UpNum",     SqlDbType.NVarChar,  50),
                new SqlParameter("@DownNum",   SqlDbType.NVarChar,  50),
                new SqlParameter("@id",        SqlDbType.Int, 4)
            };
            parameters[0].Value  = model.StockCode;
            parameters[1].Value  = model.Time;
            parameters[2].Value  = model.open;
            parameters[3].Value  = model.Close;
            parameters[4].Value  = model.High;
            parameters[5].Value  = model.Low;
            parameters[6].Value  = model.Volume;
            parameters[7].Value  = model.Turnover;
            parameters[8].Value  = model.UpNum;
            parameters[9].Value  = model.DownNum;
            parameters[10].Value = model.id;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public Stock5MinInfo DataRowToModel(DataRow row)
        {
            Stock5MinInfo model = new Stock5MinInfo();

            if (row != null)
            {
                if (row["id"] != null && row["id"].ToString() != "")
                {
                    model.id = int.Parse(row["id"].ToString());
                }
                if (row["StockCode"] != null)
                {
                    model.StockCode = row["StockCode"].ToString();
                }
                if (row["Time"] != null && row["Time"].ToString() != "")
                {
                    model.Time = DateTime.Parse(row["Time"].ToString());
                }
                if (row["open"] != null && row["open"].ToString() != "")
                {
                    model.open = decimal.Parse(row["open"].ToString());
                }
                if (row["Close"] != null && row["Close"].ToString() != "")
                {
                    model.Close = decimal.Parse(row["Close"].ToString());
                }
                if (row["High"] != null && row["High"].ToString() != "")
                {
                    model.High = decimal.Parse(row["High"].ToString());
                }
                if (row["Low"] != null && row["Low"].ToString() != "")
                {
                    model.Low = decimal.Parse(row["Low"].ToString());
                }
                if (row["Volume"] != null)
                {
                    model.Volume = row["Volume"].ToString();
                }
                if (row["Turnover"] != null)
                {
                    model.Turnover = row["Turnover"].ToString();
                }
                if (row["UpNum"] != null)
                {
                    model.UpNum = row["UpNum"].ToString();
                }
                if (row["DownNum"] != null)
                {
                    model.DownNum = row["DownNum"].ToString();
                }
            }
            return(model);
        }
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(Stock5MinInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into Stock5MinInfo(");
            strSql.Append("StockCode,Time,[open],[close],High,Low,Volume,Turnover,UpNum,DownNum)");
            strSql.Append(" values (");
            strSql.Append("@StockCode,@Time,@open,@Close,@High,@Low,@Volume,@Turnover,@UpNum,@DownNum)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@StockCode", SqlDbType.NVarChar,  50),
                new SqlParameter("@Time",      SqlDbType.DateTime),
                new SqlParameter("@open",      SqlDbType.Decimal,    9),
                new SqlParameter("@Close",     SqlDbType.Decimal,    9),
                new SqlParameter("@High",      SqlDbType.Decimal,    9),
                new SqlParameter("@Low",       SqlDbType.Decimal,    9),
                new SqlParameter("@Volume",    SqlDbType.NVarChar,  50),
                new SqlParameter("@Turnover",  SqlDbType.NVarChar,  50),
                new SqlParameter("@UpNum",     SqlDbType.NVarChar,  50),
                new SqlParameter("@DownNum",   SqlDbType.NVarChar, 50)
            };
            parameters[0].Value = model.StockCode;
            parameters[1].Value = model.Time;
            parameters[2].Value = model.open;
            parameters[3].Value = model.Close;
            parameters[4].Value = model.High;
            parameters[5].Value = model.Low;
            parameters[6].Value = model.Volume;
            parameters[7].Value = model.Turnover;
            parameters[8].Value = model.UpNum;
            parameters[9].Value = model.DownNum;

            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public Stock5MinInfo GetModel(int id)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 id,StockCode,Time,[open],[close],High,Low,Volume,Turnover,UpNum,DownNum from Stock5MinInfo ");
            strSql.Append(" where id=@id");
            SqlParameter[] parameters =
            {
                new SqlParameter("@id", SqlDbType.Int, 4)
            };
            parameters[0].Value = id;

            Stock5MinInfo model = new Stock5MinInfo();
            DataSet       ds    = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Пример #5
0
        private void bk_GetStock5MinInfoSH_DoWork(object sender, DoWorkEventArgs e)
        {
            int ConnectionID = TdxApi.TdxHq_Multi_Connect("222.73.49.4", 7709, Result, ErrInfo);

            ALLlistCon.Add(ConnectionID);
            OverlistCon.Add(ConnectionID);


            //设置 这个bk 在工作
            IsSh5MinWork = true;

            List <StockInfo>            stockList = _Stockservice.GetStockCodeList("TYPE=1");
            Dictionary <string, string> Message   = new Dictionary <string, string>();

            Message.Add("Result", "");
            Message.Add("ErrInfo", "");
            bool bool1;

            #region foreach
            foreach (StockInfo s in stockList)
            {
                try
                {
                    short Count = 10;
                    bool1 = TdxApi.TdxHq_Multi_GetSecurityBars(ConnectionID, 0, 1, s.stockcode, 0, ref Count, Result, ErrInfo);
                    if (Count != 0)
                    {
                        string[] strRow = Result.ToString().Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);   //分解行的字符串
                        //string[] strColX = strRow[1].Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                        //时间	开盘价	收盘价	最高价	最低价	成交量	成交额	涨家数	跌家数
                        for (int i = 1; i < strRow.Length; i++)
                        {
                            string[]      strCol = strRow[i].Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                            Stock5MinInfo stock  = new Stock5MinInfo();
                            if (!PublicTool.CanDateTime(strCol[0].Replace("--", "-")))
                            {
                                continue;
                            }
                            int IsHave = _Stock5MinService.GetRecordCount("StockCode='" + s.stockcode + "' and Time=CONVERT(datetime,'" + strCol[0].Replace("--", "-") + "',102)");
                            if (IsHave > 0)
                            {
                                continue;
                            }
                            stock.StockCode = s.stockcode;
                            stock.Time      = Convert.ToDateTime(strCol[0].Replace("--", "-"));
                            stock.open      = decimal.Parse(PublicTool.IsNumElseToZero(strCol[1]));
                            stock.Close     = decimal.Parse(PublicTool.IsNumElseToZero(strCol[2]));
                            stock.High      = decimal.Parse(PublicTool.IsNumElseToZero(strCol[3]));
                            stock.Low       = decimal.Parse(PublicTool.IsNumElseToZero(strCol[4]));
                            stock.Volume    = strCol[5];
                            stock.Turnover  = strCol[6];
                            //stock.UpNum = strCol[7];
                            //stock.DownNum = strCol[8];
                            int ID = _Stock5MinService.Add(stock);
                            if (ID > 0)
                            {
                                string message = "Current tiem is: " + Convert.ToDateTime(strCol[0].Replace("--", "-"));
                                //ReportProgress 方法把信息传递给 ProcessChanged 事件处理函数。
                                //第一个参数类型为 int,表示执行进度。
                                //如果有更多的信息需要传递,可以使用 ReportProgress 的第二个参数。
                                //这里我们给第二个参数传进去一条消息。
                                Message["Result"]  = Result.ToString();
                                Message["ErrInfo"] = ErrInfo.ToString();
                                Message["Message"] = message.ToString();
                                bk_GetStock5MinInfoSH.ReportProgress(i, Message);
                            }
                            else
                            {
                                //记录日志
                                Message["Result"]  = Result.ToString();
                                Message["ErrInfo"] = ErrInfo.ToString();
                                Message["Message"] = "";
                                bk_GetStock5MinInfoSH.ReportProgress(i, Message);
                                continue;
                            }
                        }
                    }
                    else
                    {
                        Count = 10;
                        bool1 = TdxApi.TdxHq_Multi_GetSecurityBars(ConnectionID, 0, 1, s.stockcode, 0, ref Count, Result, ErrInfo);
                    }
                }
                catch
                {
                    //记录日志
                    continue;
                }
                finally
                {
                }
            }
            #endregion foreach
            ALLlistCon.Remove(ConnectionID);
            OverlistCon.Remove(ConnectionID);
            TdxApi.TdxHq_Multi_Disconnect(ConnectionID);
            IsSh5MinWork = false;
        }