Advertisement
thebys

Vylepšená třída databázových operací (pozná konec analýzy)

Jul 26th, 2011
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.60 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data.SqlClient; //DB
  6. using System.Configuration; //DB
  7. using System.Data; //DB
  8.  
  9. namespace EPOS_LS
  10. {
  11.     class dbo
  12.     {
  13.         //testy
  14.         public static bool testdbconnection(form1 form)
  15.         {
  16.             logsys.WriteLogEntry("Proběhne pokus o připojiení k databázi", form);
  17.             string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  18.             logsys.WriteLogEntry("Pro připojení se použije řetězec: \"" + cstring + "\"", form);
  19.  
  20.             SqlConnection sqlpripojeni = new SqlConnection(cstring);
  21.  
  22.             try
  23.             {
  24.                 sqlpripojeni.Open();
  25.                 logsys.WriteLogEntry("Připojení proběhlo v pořádku", form);
  26.                 return true;
  27.             }
  28.             catch { logsys.WriteLogEntry("Připojení se nezdařilo!", form); return false; }
  29.         }
  30.         //číselníky
  31.         public static void writebaselistlevel2(form1 form, int districtid, int regionid, string name)
  32.         {
  33.             string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  34.            
  35.             SqlConnection sqlpripojeni = new SqlConnection(cstring);
  36.             SqlCommand umoznizapisid = new SqlCommand("SET IDENTITY_INSERT Districts ON", sqlpripojeni);
  37.             SqlCommand znemoznizapisid = new SqlCommand("SET IDENTITY_INSERT Districts OFF", sqlpripojeni);
  38.             SqlCommand pridejzaznam = new SqlCommand("insert INTO Districts ([DistrictId], [RegionId], [Name]) VALUES (@districtid,@regionid,@name)", sqlpripojeni);
  39.  
  40.             pridejzaznam.Parameters.Add(new SqlParameter("@DistrictId", districtid));
  41.             pridejzaznam.Parameters.Add(new SqlParameter("@RegionId", regionid));
  42.             pridejzaznam.Parameters.Add(new SqlParameter("@Name", name));
  43.  
  44.  
  45.             sqlpripojeni.Open();
  46.             logsys.WriteLogEntry("Proběhne zápis do databáze", form);
  47.             umoznizapisid.ExecuteNonQuery();
  48.             pridejzaznam.ExecuteNonQuery();
  49.             znemoznizapisid.ExecuteNonQuery();
  50.             logsys.WriteLogEntry("Zápis proběh úspěšně", form);
  51.             sqlpripojeni.Close();
  52.  
  53.  
  54.  
  55.  
  56.         } //použito pro číselník: http://volby.cz/pls/ps2010/ps81?xjazyk=CZ
  57.         public static void writebaselistlevel3(form1 form, int cityid, int districtid, string name)
  58.         {
  59.             string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  60.  
  61.             SqlConnection sqlpripojeni = new SqlConnection(cstring);
  62.             SqlCommand umoznizapisid = new SqlCommand("SET IDENTITY_INSERT Cities ON", sqlpripojeni);
  63.             SqlCommand znemoznizapisid = new SqlCommand("SET IDENTITY_INSERT Cities OFF", sqlpripojeni);
  64.             SqlCommand pridejzaznam = new SqlCommand("insert INTO Cities ([CityId], [DistrictId], [Name]) VALUES (@cityid,@districtid,@name)", sqlpripojeni);
  65.            
  66.             pridejzaznam.Parameters.Add(new SqlParameter("@CityId", cityid));
  67.             pridejzaznam.Parameters.Add(new SqlParameter("@DistrictId", districtid));
  68.             pridejzaznam.Parameters.Add(new SqlParameter("@Name", name));
  69.  
  70.  
  71.             sqlpripojeni.Open();
  72.             logsys.WriteLogEntry("Proběhne zápis do databáze", form);
  73.             umoznizapisid.ExecuteNonQuery();
  74.             pridejzaznam.ExecuteNonQuery();
  75.             znemoznizapisid.ExecuteNonQuery();
  76.             logsys.WriteLogEntry("Zápis proběh úspěšně", form);
  77.             sqlpripojeni.Close();
  78.  
  79.  
  80.  
  81.  
  82.         } //použito pro číselník: ?//TODO
  83.         //funkce (čísleníky)
  84.         public static int highestid()
  85.     {
  86.         int id = -1;
  87.        
  88.         string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  89.         SqlConnection sqlpripojeni = new SqlConnection(cstring);
  90.         SqlCommand gethid = new SqlCommand("Select Max(Cityid) From Cities", sqlpripojeni);
  91.         sqlpripojeni.Open();
  92.         id = Convert.ToInt32(gethid.ExecuteScalar());
  93.         sqlpripojeni.Close();
  94.         return id;
  95.     }
  96.         public static int getdistrictid(string okres)
  97.         {
  98.             string dname = okres;
  99.             string cstring = Properties.Settings.Default.volbydbConnectionString;
  100.             int districtid = -1;
  101.             using (SqlConnection sqlpripojeni = new SqlConnection(cstring))
  102.             using (SqlCommand getrid = new SqlCommand("SELECT DistrictId FROM Districts WHERE Name= @Districtname", sqlpripojeni))
  103.             {
  104.                 getrid.Parameters.Add(new SqlParameter("@Districtname", SqlDbType.NVarChar, dname.Length)).Value = dname;
  105.                 sqlpripojeni.Open();
  106.                 districtid = Convert.ToInt32(getrid.ExecuteScalar());
  107.                 return districtid;
  108.             }
  109.         }
  110.  
  111.  
  112.         //výsledky
  113.         public static void zapisvysledek(int year, int districtid, int subjectid, int votes)
  114.         {
  115.             string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  116.             //nejdřív si přiřadíme potřebná data (skutečné ID volební strany)
  117.             int realsubjectid;
  118.             using (SqlConnection sqlpripojeni = new SqlConnection(cstring))
  119.             using (SqlCommand getrsid = new SqlCommand("SELECT SubjectId FROM Subjects WHERE SubjectNumber = @subjectnumber AND Year = @year", sqlpripojeni))
  120.             {
  121.                 getrsid.Parameters.Add(new SqlParameter("@subjectnumber", SqlDbType.Int)).Value = subjectid;
  122.                 getrsid.Parameters.Add(new SqlParameter("@year", SqlDbType.Int)).Value = year;
  123.                 sqlpripojeni.Open();
  124.                 realsubjectid = Convert.ToInt32(getrsid.ExecuteScalar());
  125.             }    
  126.            
  127.            
  128.             //zapíšeme výsledek
  129.             SqlConnection sqlpripojeni2 = new SqlConnection(cstring);
  130.             SqlCommand umoznizapisid = new SqlCommand("SET IDENTITY_INSERT Results ON", sqlpripojeni2);
  131.             SqlCommand znemoznizapisid = new SqlCommand("SET IDENTITY_INSERT Results OFF", sqlpripojeni2);
  132.             SqlCommand pridejzaznam = new SqlCommand("insert INTO Results ([DistrictId], [SubjectId], [Year], [Votes]) VALUES (@districtid,@subjectid,@year,@votes)", sqlpripojeni2);
  133.  
  134.             pridejzaznam.Parameters.Add(new SqlParameter("@districtid", districtid));
  135.             if (subjectid == -1)
  136.             {
  137.                 pridejzaznam.Parameters.Add(new SqlParameter("@subjectid", DBNull.Value));
  138.             }
  139.             else
  140.             {
  141.                 pridejzaznam.Parameters.Add(new SqlParameter("@subjectid", realsubjectid));
  142.             }
  143.            
  144.             pridejzaznam.Parameters.Add(new SqlParameter("@year", year));
  145.             pridejzaznam.Parameters.Add(new SqlParameter("@votes", votes));
  146.  
  147.             sqlpripojeni2.Open();
  148.             //umoznizapisid.ExecuteNonQuery();
  149.             pridejzaznam.ExecuteNonQuery();
  150.             //znemoznizapisid.ExecuteNonQuery();
  151.             sqlpripojeni2.Close();
  152.         }
  153.         public static int getcityid(string name)
  154.         {
  155.             int cityid;
  156.             string cstring = Properties.Settings.Default.volbydbConnectionString; //vytáhne z settings.setting connection string
  157.             SqlConnection sqlpripojeni = new SqlConnection(cstring);
  158.             SqlCommand getcid = new SqlCommand("Select Cityid From Cities WHERE Name=@Cityname", sqlpripojeni);
  159.             {
  160.                 getcid.Parameters.Add(new SqlParameter("@Cityname", SqlDbType.NVarChar, name.Length)).Value = name;
  161.                 sqlpripojeni.Open();
  162.                 cityid = Convert.ToInt32(getcid.ExecuteScalar());
  163.                 if (cityid == 0)
  164.                 {
  165.                     return -1;
  166.                 }
  167.                 else
  168.                 {
  169.                     return cityid;
  170.                 }
  171.                
  172.             }
  173.         }
  174.         //automatické použití pouze pro okresy!!!
  175.         public static bool zapsano(int year, form1 form) {
  176.             string cstring = Properties.Settings.Default.volbydbConnectionString;
  177.             int pocetzapsanych = -1;
  178.             int cilovypocet = 0;
  179.             switch (year) //hrubé součty, doporučuju pro příště loadovat z formu de facto udává minimální počet zapsaných hodnot pro konec procházení dat
  180.             {
  181.                 case 1996 | 1998:
  182.                     cilovypocet = 89;
  183.                     break;
  184.                 case 2002 | 2006:
  185.                     cilovypocet = 91;
  186.                     break;
  187.                 case 2010:
  188.                     cilovypocet = 76;
  189.                     break;
  190.             }
  191.  
  192.             using (SqlConnection sqlpripojeni = new SqlConnection(cstring))
  193.             using (SqlCommand getcount = new SqlCommand("SELECT Count(*) FROM results WHERE Year = @year and subjectid is null", sqlpripojeni))
  194.             {
  195.                 getcount.Parameters.Add(new SqlParameter("@year", SqlDbType.Int)).Value = year;
  196.                 sqlpripojeni.Open();
  197.                 pocetzapsanych = Convert.ToInt32(getcount.ExecuteScalar());
  198.             }
  199.            
  200.             if (pocetzapsanych >= cilovypocet)
  201.             {
  202.                 logsys.WriteLogEntry("Byli zjištěny a zapsány požadované hodnoty (celkem: " + pocetzapsanych.ToString() + " okresů).", form);
  203.                 return true;
  204.             }
  205.             else
  206.             {
  207.                 return false;
  208.             }
  209.         }
  210.     }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement