/// <summary> /// 更新一条数据 /// </summary> public bool Update(Stock5MinInfo model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update Stock5MinInfo set "); strSql.Append("Symbol=@Symbol,"); 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 Symbol=@Symbol"); SqlParameter[] parameters = { new SqlParameter("@Symbol", SqlDbType.NVarChar, 10), 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("@Symbol", SqlDbType.NVarChar, 10) }; 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["Symbol"] != null) { model.StockCode = row["Symbol"].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("Symbol,Time,[open],[close],High,Low,Volume,Turnover,UpNum,DownNum)"); strSql.Append(" values ("); strSql.Append("@Symbol,@Time,@open,@Close,@High,@Low,@Volume,@Turnover,@UpNum,@DownNum)"); strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@Symbol", SqlDbType.NVarChar, 10), 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(string Symbol) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 Symbol,Time,[open],[close],High,Low,Volume,Turnover,UpNum,DownNum from Stock5MinInfo "); strSql.Append(" where Symbol=@Symbol"); SqlParameter[] parameters = { new SqlParameter("@Symbol", SqlDbType.NVarChar, 10) }; parameters[0].Value = Symbol; 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); } }
void SyncStoc5MinkInfo() { bool bool1 = TdxApi.OpenTdx(ErrInfo); int ConnectionID = TdxApi.TdxHq_Multi_Connect(m_Server.IP, m_Server.Port, Result, ErrInfo); ALLlistCon.Add(ConnectionID); OverlistCon.Add(ConnectionID); //设置 这个bk 在工作 List <StockInfo> stockList = _oStockInfo.GetStockCodeList("TYPE=0"); Dictionary <string, string> Message = new Dictionary <string, string>(); Message.Add("Result", ""); Message.Add("ErrInfo", ""); foreach (StockInfo s in stockList) { //try //{ short Count = 10; bool1 = TdxApi.TdxHq_Multi_GetSecurityBars(ConnectionID, 0, 0, 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 = _oStock5MinInfo.GetRecordCount("Symbol='" + 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 = _oStock5MinInfo.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(); } else { //记录日志 Message["Result"] = Result.ToString(); Message["ErrInfo"] = ErrInfo.ToString(); Message["Message"] = ""; continue; } } } else { Count = 10; bool1 = TdxApi.TdxHq_Multi_GetSecurityBars(ConnectionID, 0, 0, s.stockcode, 0, ref Count, Result, ErrInfo); } } ALLlistCon.Remove(ConnectionID); OverlistCon.Remove(ConnectionID); TdxApi.TdxHq_Multi_Disconnect(ConnectionID); }