cn.Open(); using (SqlDataAdapter adapter = new SqlDataAdapter("select s.id, s.name_ru, s.sendType, c1.cod, s.typPeriod, c2.name_ru, s.metaAlg, m.cod, s.dt_send, s.dt_beg, s.dt_send_daytime, s.dt_period_end from FROM Shedule s inner join ClBaseItem c1 on s.sendType=c1.id inner join ClBaseItem c2 on s.typPeriod=c2.idinner join MetaAlg m on s.metaAlg=m.id", cn)) using (DataTable dt = new DataTable()) { adapter.Fill(dt); foreach (DataRow row in dt.Rows) { string dt_str = row["s.dt_send_daytime"].ToString(); string[] dt_str_tmp = dt_str.Split(':'); switch (row["c2.name_ru"].ToString()) { case "Час": Console.WriteLine(dt_str_tmp[2]);//мм break; case "Неделя": Console.WriteLine(dt_str_tmp[0] + ":" + dt_str_tmp[1]);//дд:чч break; case "День": Console.WriteLine(dt_str_tmp[1] + ":" + dt_str_tmp[2]);//чч:мм break; case "5 минут": Console.WriteLine(dt_str_tmp[3]);//сс break; case "10 минут": Console.WriteLine(dt_str_tmp[3]);//сс break; case "30 минут": Console.WriteLine(dt_str_tmp[2] + ":" + dt_str_tmp[3]);//мм:сс break; } MyTimer myTimer = new MyTimer(); myTimer.Interval = Convert.ToInt32(row["s.dt_send_daytime"]); myTimer.datetime = Convert.ToDateTime(row["s.dt_beg"]); myTimer.id = Convert.ToInt32(row["s.id"]); myTimer.alg = Convert.ToString(row["m.cod"]); myTimer.Dt_Begin = Convert.ToDateTime(row["s.dt_beg"]); myTimer.Dt_Period_End = Convert.ToDateTime(row["s.dt_period_end"]); myTimer.st = row["st"].ToString(); myTimer.comment = row["comment"].ToString(); myTimer.dt_create = Convert.ToDateTime(row["dt_create"]); myTimer.dt_update = Convert.ToDateTime(row["dt_update"]); myTimer.Elapsed += OnTimeout; myTimer.AutoReset = true; myTimer.Enabled = true; } } cn.Close(); } Console.WriteLine("Идёт запись..."); Console.WriteLine("Нажмите ENTER чтобы выйти"); Console.Read(); } static void OnTimeout(object sender, System.Timers.ElapsedEventArgs e) { var id = new [] {((MyTimer)sender).id}; var alg = new[] { ((MyTimer)sender).alg}; var date = new[] { ((MyTimer)sender).datetime }; var st = new[] { ((MyTimer)sender).st.ToString() }; var comment = new[] { ((MyTimer)sender).comment.ToString() }; var beg = new[] { ((MyTimer)sender).Dt_Begin }; var end = new[] { ((MyTimer)sender).Dt_Period_End }; var cr = new[] { ((MyTimer)sender).dt_create }; var upd = new[] { ((MyTimer)sender).dt_update }; string sql = string.Format("Insert Into Alg_stack" + "(id,metaAlg,datetime, st, comment, dt_beg, dt_end, dt_create, dt_update) Values(@id, @alg, @date, @st, @comment, @begin, @end, @create, @update)"); using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = @"Data Source=192.168.1.156;Initial Catalog=ihd_aktobe;User ID=sa;Password=mypass"; cn.Open(); using (SqlCommand cmd = new SqlCommand(sql, cn)) { cmd.Parameters.AddWithValue("@id", id); cmd.Parameters.AddWithValue("@alg", alg); cmd.Parameters.AddWithValue("@date", date); cmd.Parameters.AddWithValue("@st", st); cmd.Parameters.AddWithValue("@comment", comment); cmd.Parameters.AddWithValue("@begin", beg); cmd.Parameters.AddWithValue("@end", end); cmd.Parameters.AddWithValue("@create", cr); cmd.Parameters.AddWithValue("@update", upd); cmd.ExecuteNonQuery(); } cn.Close(); Closed due to the fact that off-topic participants Streletz , D-side , Nick Volynkin ♦ Jun 8 '16 at 0:45 .
It seems that this question does not correspond to the subject of the site. Those who voted to close it indicated the following reason:
- “Questions asking for help with debugging (“ why does this code not work? ”) Should include the desired behavior, a specific problem or error, and a minimum code for playing it right in the question . Questions without an explicit description of the problem are useless for other visitors. See How to create minimal, self-sufficient and reproducible example . " - Streletz, D-side, Nick Volynkin
- Well, create in a while loop (dr .Read ()) what's the problem - Dmitry Chistik
- so it happened - propro17
- it is possible and with the adapter with = =) - Dmitry Chistik
- oneWhat is this pokemon? row ["2017-11-12"] Do you have a column in the base "2017-11-12" ??? - Dmitry Chistik
- oneWell, first of all, create a view in the database so that it returns a list of those columns that you use in the timer, how to do this, see Google and the SQL query language. And in the code you just take these columns and shove into the timer parameters, and it doesn't matter how many of these parameters will be 1 or 1000. I updated the code below - Dmitry Chistik
|
1 answer
You can try this:
public class MyTimer : System.Timers.Timer { public string alg{ get; set; } public DateTime Dt_Begin { get; set; } public DateTime Dt_Period_End { get; set; } public int id { get; set; } public DateTime datetime { get; set; } public string st { get; set; } public string comment { get; set; } public DateTime dt_create { get; set; } public DateTime dt_update { get; set; } } static void Main(string[] args) { using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString = @"Data Source=ПРИМЕР-ПК;Initial Catalog=database;Integrated Security=True"; cn.Open(); using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Table_Timer", cn)) using (DataTable dt = new DataTable()) { adapter.Fill(dt); foreach (DataRow row in dt.Rows) { MyTimer myTimer = new MyTimer() myTimer.Interval = Convert.ToInt32(row["Interval"]); myTimer.alg = row["alg"].ToString(); myTimer.Dt_Begin = Convert.ToDateTime(row["Dt_Begin"]); myTimer.Dt_Period_End = Convert.ToDateTime(row["Dt_Period_End"]); myTimer.id = Convert.ToInt32(row["id"]); myTimer.datetime = Convert.ToDateTime(row["datetime"]); myTimer.st = row["st"].ToString(); myTimer.comment = row["comment"].ToString(); myTimer.dt_create = Convert.ToDateTime(row["dt_create"]); myTimer.dt_update = Convert.ToDateTime(row["dt_update"]); myTimer.Elapsed += OnTimeout; myTimer.AutoReset = true; myTimer.Enabled = true; } } cn.Close(); } } static void OnTimeout(object sender, System.Timers.ElapsedEventArgs e) { //Тут код таймера } Sheet in your case, I do not see the need to create ...
- Thank! If I ask anything ) - propro17
- myTimer.Elapsed + = OnTimeout; myTimer.AutoReset = true; myTimer.Enabled = true; I have it separately worth it - propro17
- yes you can shove inside - propro17
- Why not. Why create three cycles? And for types inherited from IDisposable it is better to use using - Dmitry Chistik
- I have three timers, you can example) - propro17
|