Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


SQL Engine för mina program(nybörjare)

Postades av 2006-01-19 11:36:06 - David Zander, i forum c# (c-sharp), Tråden har 3 Kommentarer och lästs av 696 personer

Hej!
Jag håller på mycket med SQL i skolan och även på mina praktik platser men är lite less på att behöva skriva connection strings och hela den där raddan.
Så då kommer man förstås upp med idén att man vill ha en klass som tar hand om detta åt en, och här kommer problemen.
Jag vet att man kan kalla på en metod genom att skriva class.method(); så jag tänkte så här.

class Sqlengine
{
public void ADO()
{
SqlConnection Connect = new SqlConnection();
Connect.ConnectionString = "initial Catalog = userdb;" + "Data Surce = localhost";
SqlCommand Command = new SqlCommand();
Command.Connection = Connect;
Command.CommandText = "SELECT * From userlogg";
SqlDataReader Reader = Command.ExecuteReader();
}
public static void Open()
{
Connect.Open();
}
public static void Close()
{
Connect.Close();
}
public static void Read()
{
while (Reader.Read())
{
string firstname = Reader.GetString;
}
}
}

Men det funkar ju inget vidare:/


Svara

Sv: SQL Engine för mina program(nybörjare)

Postades av 2006-01-19 18:54:25 - Per Hultqvist

Några synpunkter :

1. Varför konkatenera delsträngar i onödan? Enda skälet jag kan tänka mig är att radbryta, dvs formatera koden snyggare och det kanske var ditt syfte?
<code>
Connect.ConnectionString = "initial Catalog = userdb;" + "Data Surce = localhost";
Connect.ConnectionString = "initial Catalog = userdb;Data Surce = localhost";
</code>

2. Använd konstruktorerna på de olika klasserna. I stället för att skriva :
<code>
SqlConnection Connect = new SqlConnection();
Connect.ConnectionString = "initial Catalog = userdb;" + "Data Surce = localhost";
</code>
så kan du skriva
<code>
SqlConnection Connect = new SqlConnection("initial Catalog = userdb;Data Surce = localhost");
</code>
och i stället för att skriva :
<code>
SqlCommand Command = new SqlCommand();
Command.Connection = Connect;
Command.CommandText = "SELECT * From userlogg";
</code>
kan du skriva :
<code>
SqlCommand Command = new SqlCommand("SELECT * From userlogg",Connect);
</code>

3. Använd using-keyword:et för klasser som implementerar IDisposable så behöver du inte anropa Dispose-metoder (eller i många fall Close-metoder):
<code>
using (SqlConnection Connect=new SqlConnection(GetConnectionString())
{
Connect.Open();
using (SqlCommand Command = new SqlCommand("SELECT * From userlogg",Connect))
Command.ExecuteNonQuery();
}
</code>
4. Var inte rädd för att öppna och stänga connections hela tiden, det tar connection poolingen hand om såvida du inte stängt av denna i din connectionsträng. Med andra ord, att hålla en connection öppen under hela programmets livstid är normalt sett ingen bra lösning.

Så lite kodexempel :
<code>
class SqlEngineImproved
{
public SqlEngineImproved()
{
}

public static string GetConnectionString(string ServerName, string DataBaseName, string UserName, string Password, bool UseNTAuthentication)
{
System.Text.StringBuilder mString=new System.Text.StringBuilder();

mString.Append("Server=");
if (ServerName=="")
mString.Append("(local");
else
mString.Append(ServerName);

if (UseNTAuthentication)
mString.Append(";Trusted_Connection=True");
else
{
mString.Append(";UID=");
mString.Append(UserName);
mString.Append(";PWD=");
mString.Append(Password);
}
mString.Append(";Database=");
if (DataBaseName=="")
mString.Append("Master");
else
mString.Append(DataBaseName);
mString.Append(";");

return mString.ToString();
}

public static SqlConnection GetConnection()
{
SqlConnection connection=new SqlConnection(GetConnectionString());
connection.Open();
return connection;
}

public static DataSet ExecuteSQL(string SQL)
{
using (SqlConnection connection=new SqlConnection(GetConnectionString()))
{
connection.Open();

using (SqlCommand command=new SqlCommand(SQL,connection))
{
command.CommandType=CommandType.Text;
command.ExecuteNonQuery();
}
}
}
}
</code>


Svara

Sv:SQL Engine för mina program(nybörjare)

Postades av 2006-01-20 11:20:53 - David Zander

Jag provade ut din kod, och skulle jag få den till att funka så ser det ju mycket frächare ut än min kod.
Jag går en utbildning i språket och jag är inte så hemma på det hela än, tyvärr fick jag fel meddelande när jag provade din kodning, den klagade på att din GetConnection sträng och sa att den inte kan ta några overloads:/


Svara

Sv: SQL Engine för mina program(nybörjare)

Postades av 2006-01-20 20:47:09 - Per Hultqvist

Jag var lite lat och varvade kod som jag skrev ner från minnet med kod som jag kopierade från egna projekt, för att ge dig lite hints men det var inte menat som en komplett lösning. Funktionen GetConnectionString använder jag i kombination med ett formulär som där man kan ange server, databas, NT authentication, SQL login och SQL password, och dessa parametrar skickas in till funktionen GetConnectionString.

Lämpligen sparar man dessa (eller den färdiga connectionsträngen) i statiska variabler under hela applikationens (sessionens) livstid. En överlagrad GetConnectionString utan parametrar skulle alltså kunna hämta den redan sammansatta connectionsträngen.

Lägg till en statisk variabel till klassen:
<code>
string mConnectionString="";
</code>
Sätt sedan denna variabel sist i GetConnectionString (med alla parametrarna):
<code>
mConnectionString=mString.ToString();
// före raden :
return mString.ToString();
</code>
Slutligen skapa en överlagrad funktion utan parametrar :
<code>
public static string GetConnectionString()
{
if (mConnectionString=="")
throw new Exception("Connectionstring not set!");
else
return mConnectionString;
}
</code>
Du måste alltså först anropa GetConnectionString en gång med alla parametrar och därefter kan du återanvända den sparade connectionsträngen genom att anropa GetConnectionString utan parametrar.

Som sagt, min kod var inte på något sätt en komplett lösning men jag hjälper dig gärna vidare om du har någon mer specifik fråga.

Ps. Jag noterade just ett stavfel i din connectionsträng. "Data surce" skall vara "Data Source" kanske var detta ett skäl till att din kod inte fungerade.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 167
27 952
271 704
680
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies