/// <summary> /// 为Tcp客户端终结点从DbDataReader中赋值 /// </summary> /// <param name="listener"></param> /// <param name="reader"></param> /// <param name="prefix"></param> public static void SetTcpClientEndpointSelectFields(TcpClientEndpoint endpoint, DbDataReader reader, string prefix) { endpoint.ID = (Guid)reader[string.Format("{0}id", prefix)]; if (reader[string.Format("{0}name", prefix)] != DBNull.Value) { endpoint.Name = reader[string.Format("{0}name", prefix)].ToString(); } if (reader[string.Format("{0}serveraddress", prefix)] != DBNull.Value) { endpoint.ServerAddress = reader[string.Format("{0}serveraddress", prefix)].ToString(); } if (reader[string.Format("{0}serverport", prefix)] != DBNull.Value) { endpoint.ServerPort = (int)reader[string.Format("{0}serverport", prefix)]; } if (reader[string.Format("{0}keepalive", prefix)] != DBNull.Value) { endpoint.KeepAlive = (bool)reader[string.Format("{0}keepalive", prefix)]; } if (reader[string.Format("{0}poolmaxsize", prefix)] != DBNull.Value) { endpoint.PoolMaxSize = (int)reader[string.Format("{0}poolmaxsize", prefix)]; } if (reader[string.Format("{0}executedatafactorytype", prefix)] != DBNull.Value) { endpoint.ExecuteDataFactoryType = reader[string.Format("{0}executedatafactorytype", prefix)].ToString(); } if (reader[string.Format("{0}executedatafactorytypeusedi", prefix)] != DBNull.Value) { endpoint.ExecuteDataFactoryTypeUseDI = (bool)reader[string.Format("{0}executedatafactorytypeusedi", prefix)]; } if (reader[string.Format("{0}heartbeatsenddata", prefix)] != DBNull.Value) { endpoint.HeartBeatSendData = reader[string.Format("{0}heartbeatsenddata", prefix)].ToString(); } if (reader[string.Format("{0}createtime", prefix)] != DBNull.Value) { endpoint.CreateTime = (DateTime)reader[string.Format("{0}createtime", prefix)]; } if (reader[string.Format("{0}modifytime", prefix)] != DBNull.Value) { endpoint.ModifyTime = (DateTime)reader[string.Format("{0}modifytime", prefix)]; } }
public async Task <TcpClientEndpoint> QueryByName(string name) { TcpClientEndpoint endpoint = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _sockerConnectionFactory.CreateReadForSocket(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"select {0} from TcpClientEndpoint where [name]=@name", StoreHelper.GetTcpClientEndpointSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150) { Value = name }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; reader = await commond.ExecuteReaderAsync(); await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { endpoint = new TcpClientEndpoint(); StoreHelper.SetTcpClientEndpointSelectFields(endpoint, reader, string.Empty); } await reader.CloseAsync(); } } }); return(endpoint); }
public async Task Update(TcpClientEndpoint endpoint) { await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _sockerConnectionFactory.CreateAllForSocket(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = @"update TcpClientEndpoint set [name]=@name,[serveraddress]=@serveraddress,[serverport]=@serverport,[keepalive]=@keepalive,[poolmaxsize]=@poolmaxsize,[executedatafactorytype]=@executedatafactorytype,[executedatafactorytypeusedi]=@executedatafactorytypeusedi,[heartbeatsenddata]=@heartbeatsenddata,[modifytime]=getutcdate() where [id]=@id" }) { var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value = endpoint.ID }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150) { Value = endpoint.Name }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@serveraddress", SqlDbType.NVarChar, 150) { Value = endpoint.ServerAddress }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@serverport", SqlDbType.Int) { Value = endpoint.ServerPort }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@keepalive", SqlDbType.Bit) { Value = endpoint.KeepAlive }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@poolmaxsize", SqlDbType.Int) { Value = endpoint.PoolMaxSize }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@executedatafactorytype", SqlDbType.NVarChar, 150) { Value = endpoint.ExecuteDataFactoryType }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@executedatafactorytypeusedi", SqlDbType.Bit) { Value = endpoint.ExecuteDataFactoryTypeUseDI }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@heartbeatsenddata", SqlDbType.NVarChar, 500) { Value = endpoint.HeartBeatSendData }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); await commond.ExecuteNonQueryAsync(); } }); }
public async Task <QueryResult <TcpClientEndpoint> > QueryByName(string name, int page, int pageSize) { QueryResult <TcpClientEndpoint> result = new QueryResult <TcpClientEndpoint>(); await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _sockerConnectionFactory.CreateReadForSocket(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"set @currentpage=@page select @count= count(*) from TcpClientEndpoint where [name] like @name if @pagesize*@page>=@count begin set @currentpage= @count/@pagesize if @count%@pagesize<>0 begin set @currentpage=@currentpage+1 end if @currentpage=0 set @currentpage=1 end else if @page<1 begin set @currentpage=1 end select {0} from TcpClientEndpoint where [name] like @name order by [sequence] offset (@pagesize * (@currentpage - 1)) rows fetch next @pagesize rows only;" , StoreHelper.GetTcpClientEndpointSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@page", SqlDbType.Int) { Value = page }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@pagesize", SqlDbType.Int) { Value = pageSize }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150) { Value = $"{name.ToSqlLike()}%" }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@count", SqlDbType.Int) { Direction = ParameterDirection.Output }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@currentpage", SqlDbType.Int) { Direction = ParameterDirection.Output }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var endpoint = new TcpClientEndpoint(); StoreHelper.SetTcpClientEndpointSelectFields(endpoint, reader, string.Empty); result.Results.Add(endpoint); } await reader.CloseAsync(); result.TotalCount = (int)commond.Parameters["@count"].Value; result.CurrentPage = (int)commond.Parameters["@currentpage"].Value; } } }); return(result); }
public async Task Add(TcpClientEndpoint endpoint) { //获取读写连接字符串 var strConn = _sockerConnectionFactory.CreateAllForSocket(); await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran }) { if (endpoint.ID == Guid.Empty) { commond.CommandText = @"insert into TcpClientEndpoint([id],[name],[serveraddress],[serverport],[keepalive],[poolmaxsize],[executedatafactorytype],[executedatafactorytypeusedi],[heartbeatsenddata],[createtime],[modifytime]) values(default,@name,@serveraddress,@serverport,@keepalive,@poolmaxsize,@executedatafactorytype,@executedatafactorytypeusedi,@heartbeatsenddata,getutcdate(),getutcdate()); select @newid=[id] from TcpListenerLog where [sequence]=SCOPE_IDENTITY()"; } else { commond.CommandText = @"insert into TcpClientEndpoint([id],[name],[serveraddress],[serverport],[keepalive],[poolmaxsize],[executedatafactorytype],[executedatafactorytypeusedi],[heartbeatsenddata],[createtime],[modifytime]) values(@id,@name,@serveraddress,@serverport,@keepalive,@poolmaxsize,@executedatafactorytype,@executedatafactorytypeusedi,@heartbeatsenddata,getutcdate(),getutcdate())"; } SqlParameter parameter; if (endpoint.ID != Guid.Empty) { parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value = endpoint.ID }; commond.Parameters.Add(parameter); } else { parameter = new SqlParameter("@newid", SqlDbType.UniqueIdentifier) { Direction = ParameterDirection.Output }; commond.Parameters.Add(parameter); } parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150) { Value = endpoint.Name }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@serveraddress", SqlDbType.NVarChar, 150) { Value = endpoint.ServerAddress }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@serverport", SqlDbType.Int) { Value = endpoint.ServerPort }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@keepalive", SqlDbType.Bit) { Value = endpoint.KeepAlive }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@poolmaxsize", SqlDbType.Int) { Value = endpoint.PoolMaxSize }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@executedatafactorytype", SqlDbType.NVarChar, 150) { Value = endpoint.ExecuteDataFactoryType }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@executedatafactorytypeusedi", SqlDbType.Bit) { Value = endpoint.ExecuteDataFactoryTypeUseDI }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@heartbeatsenddata", SqlDbType.NVarChar, 500) { Value = endpoint.HeartBeatSendData }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); await commond.ExecuteNonQueryAsync(); if (endpoint.ID == Guid.Empty) { endpoint.ID = (Guid)commond.Parameters["@newid"].Value; } } }); }