Προς το περιεχόμενο

SQL / Network Programming, κάνα GUIDE?...


Adawn

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά θα ήθελα να μάθω την θεωρία, πως δηλαδή δουλεύει η SQL και το Socket Programming

 

δεν θέλω λινκς με παραδείγματα, θέλω απλώς να μάθω το πως.

 

δηλαδή, παράδειγμα αυτό

>
try
		{
	    	SqlConnection thisConnection = new SqlConnection(@"Network Library=DBMSSOCN;Data Source=192.168.0.100,1433;database=Northwind;User id=Paladine;Password=;");
			thisConnection.Open();
	 	SqlCommand thisCommand = thisConnection.CreateCommand();
	 	thisCommand.CommandText = "SELECT CustomerID, CompanyName FROM Customers";
		 SqlDataReader thisReader = thisCommand.ExecuteReader();
			while (thisReader.Read())
			{
	 		Console.WriteLine("\t{0}\t{1}", thisReader["CustomerID"], thisReader["CompanyName"]);
				}
			thisReader.Close();
			thisConnection.Close();

		}
		catch (SqlException e)
		{
			Console.WriteLine(e.Message);
		}

SQLConection -> Για την σύνδεση ..

SqlDataReader -> Για να διαβάσουμε απο την βάση

SqlCommand -> για να τρέξουμε κάποια εντολή?...

Θα ήθελα αναλυτικά,

τι πρέπει να χρησιμοποιήσουμε και γιατί

 

 

SOCKET PROGRAMMING

 

Θα προτιμούσα ένα Guide στα ελληνικά, πώς δηλαδή επιτυγχάνεται η αποστολή πακέτων

ένα παράδειγμα:

>
try
{
Console.WriteLine("That program can transfer small file. I've test up to 850kb file");
IPAddress[] ipAddress = Dns.GetHostAddresses("localhost");
IPEndPoint ipEnd = new IPEndPoint(ipAddress[0], 5656);
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
clientSock.Connect(ipEnd);


byte[] clientData = new byte[1024 * 5000];
string receivedPath = "C:/";

int receivedBytesLen = clientSock.Receive(clientData);

int fileNameLen = BitConverter.ToInt32(clientData, 0);
string fileName = Encoding.ASCII.GetString(clientData, 4, fileNameLen);

Console.WriteLine("Client:{0} connected & File {1} started received.", clientSock.RemoteEndPoint, fileName);

BinaryWriter bWrite = new BinaryWriter(File.Open(receivedPath + fileName, FileMode.Append)); ;
bWrite.Write(clientData, 4 + fileNameLen, receivedBytesLen - 4 - fileNameLen);

Console.WriteLine("File: {0} received & saved at path: {1}", fileName, receivedPath);

bWrite.Close();
clientSock.Close();
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("File Sending fail." + ex.Message);
}

 

όπως βλέπετε χρησιμοποιούνται:

IPAdress

IPEndPoint(?)

BinaryWriter

τι κάνει το καθ'ένα από αυτά ...

 

επίσης

>
byte[] clientData = new byte[1024 * 5000];

 

τι σημαίνει

Δημοσ.

SQLConection -> Για την σύνδεση ..

Σωστά, εκεί βάζεις το connection string.

 

SqlDataReader -> Για να διαβάσουμε απο την βάση

σωστά αν και είναι ποιο εύχρηστο να χρησιμοποιείς SqlDataAdapter και DataTable

 

SqlCommand -> για να τρέξουμε κάποια εντολή?...

Εκεί γράφεις τα SQL ερωτήματα προς την βάση

 

Θα ήθελα αναλυτικά,

τι πρέπει να χρησιμοποιήσουμε και γιατί

 

 

Είναι καλύτερο και ποιο εύχρηστο να αρχίσεις να μαθαίνεις linq, υπάρχουν πολλά tutorials στο web.

 

BinaryWriter

τι κάνει το καθ'ένα από αυτά ...

επίσης

>
byte[] clientData = new byte[1024 * 5000];

 

τι σημαίνει

 

Δεν έχω ασχοληθεί με sockets για αυτό να σου απαντήσει καλύτερα κάποιος άλλος.

Με το BinaryWriter γράφεις τα bytes που έχεις σε κάποια μεταβλητή σε κάποιο αρχείο. π.χ. επεξεργάζεσαι μια εικόνα, ας πούμε προσθέτεις κάποιο φίλτρο. Οι πληροφορίες αυτές βρίσκονται στην μεταβλητή που χρησιμοποιείς στο πρόγραμμα σου και με το BinaryWriter τις γράφεις σε κάποιο αρχείο.

 

Στο byte[] clientData = new byte[1024 * 5000]; δηλώνει ότι η μεταβλητή clientData είναι 5MB. Αυτά τα 5MB δεδομένα ο κώδικας που έχεις ποιο πάνω τα προσθέτει σε ένα αρχείο στον δίσκο

Δημοσ.

Για sql πας ADO.NET + entity framework που ειναι visual programming

Ενα γρηγορο intro

Πχ η εφαρμογη

 

http://www.youtube.com/watch?v=lvw1KZSdLio

 

 

Για το παραπανω

SQL: MS SQL server express 08

Platform: windows form application

 

1) Φτιαχνεις μια db με ενα table και τα αναλογα πεδια

1.JPG

 

2) Φτιαχνεις το UI

2.JPG

 

3) Φτιαχνεις το entity σου (http://msdn.microsof...y/bb386876.aspx)

soulotion explorer -> add -> new item -> ado.net entity data model

σου βγαζει αυτο το wizard

3w1.JPG

 

 

Το connectionstring

 

3w2.JPG

 

 

 

3w2a.JPG

 

 

3w3.JPG

 

 

 

 

Τωρα εχεις το UI, ενα db Object (testEntities) και ενα table object (Persons)

 

Και τωρα ηρθε η ωρα να γραψεις τις 1000γραμμες κωδικα

 

 

 

perfix:

tb<name>: TextBox

btn<name>: Button

tv<name>: TreeView

 

OnClick "Add"

>

       private void btnAdd_Click(object sender, EventArgs e)
       {

           using (testEntities db = new testEntities())// ενα instance της db
           {
               db.AddToPersons(// εισαγωγη του row (INSERT)
                   new Persons // ενα instance απο Person object (row)
                   {
                       Age = int.Parse(tbAge.Text),
                       City = tbCity.Text,
                       Last = tbLast.Text,
                       Name = tbName.Text
                   }
                            );
               db.SaveChanges(); 
           }

       }

 

 

OnClick Serach

>

private void tbSearch_TextChanged(object sender, EventArgs e)
       {
           if (tbSearch.Text.Length > 0)
           {
               tvExplorer.Nodes.Clear();
               using (testEntities db = new testEntities())
               {
                   var q = db.Persons.Where(x => x.Name.IndexOf(tbSearch.Text) == 0); // SELECT * WHERE expression
                   foreach (Persons item in q) // add result στο treeview
                   {
                       TreeNode tvn = new TreeNode { Text = item.Name };
                       tvExplorer.Nodes.Add(tvn);

                       tvn.Nodes.AddRange(
                           new TreeNode[]
                            {
                                new TreeNode { Text = "Last: "+ item.Last},
                                new TreeNode { Text = "Age: " + item.Age.ToString()},
                                new TreeNode { Text = "City: " + item.City}
                            }
                            );
                   }
               }
           }
       }

 

 

 

 

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...