Avatar billede mach3 Nybegynder
14. januar 2005 - 13:10 Der er 14 kommentarer og
2 løsninger

Omskrive facade klassen fra access til ms sql.

Hej,

jeg skal til at skrive min facade klasse om. Pt kører jeg med access, og den skal omskrives så det kører med ms sql.

Her er et typisk eksempel fra en af funktionerne i facadeklassen:

public DataSet Test(string strPath, string strTest)
{
    OleDbConnection connSystem = new OleDbConnection          (strPath);           
            OleDbCommand objCmd = new OleDbCommand("SELECT bla bla = @tt", connSystem);

            OleDbParameter objParam;
            objParam = objCmd.Parameters.Add("@tt", OleDbType.Char);
            objParam.Direction = ParameterDirection.Input;
            objParam.Value = strTest;
           
            OleDbDataAdapter adapter = new OleDbDataAdapter(objCmd);
            DataSet ds = new DataSet();
            adapter.Fill(ds);   
           
            return ds;   
}

Som det fremgår tager funktionen to argumenter. Det ene af dem er stien til databasen, da jeg har flere databaser.

Hvordan ville I skrive dette om så det kommer til at virke med ms sql?

På forhånd mange tak.
Avatar billede arne_v Ekspert
14. januar 2005 - 13:13 #1
1) Erstat "OleDb" med "Sql".

2) Kald den med første argument som en valid SQLServer connection string.
Avatar billede askhoej Praktikant
14. januar 2005 - 13:52 #2
Sådan her og så kald med en SQL connection string.

f.eks.:
string ConnectionString = "Provider=SQLOLEDB;Data Source=server;Initial Catalog=database;uid=user;pwd=password";

public DataSet Test(string strPath, string strTest)
{
    OleDbConnection connSystem = new OleDbConnection          (strPath);           
            OleDbCommand objCmd = new OleDbCommand("SELECT * FROM tabel WHERE kolonne = ?", connSystem);

            OleDbParameter objParam;
            objParam = objCmd.Parameters.Add("kolonne", OleDbType.Char);
            objParam.Direction = ParameterDirection.Input;
            objParam.Value = strTest;
           
            OleDbDataAdapter adapter = new OleDbDataAdapter(objCmd);
            DataSet ds = new DataSet();
            adapter.Fill(ds);   
           
            return ds;   
}
Avatar billede mach3 Nybegynder
16. januar 2005 - 21:53 #3
askhoej >> Er det meningen at du anvender oledb? Troede det var meningen man skulle gøre som arne_v siger.
Avatar billede askhoej Praktikant
16. januar 2005 - 22:00 #4
jeps det er med vilje - man kan bruge både OleDb og SqlClient
Avatar billede askhoej Praktikant
16. januar 2005 - 22:06 #5
og i øvrigt ODBC hvis man lyster det. Performance mæssigt så er såvidt jeg husker OleDb og SqlClient nogenlunde lige hurtige, mens ODBC er langsomst.
Avatar billede mach3 Nybegynder
17. januar 2005 - 00:06 #6
Fandt lige denne artikel. De anbefaler, at man anvender System.Data.SqlClient til MS SQL version 7 og nyere - og det er tilfældet for min applikation.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconADONETProviders.asp
Avatar billede arne_v Ekspert
17. januar 2005 - 00:10 #7
Normalt vil man anbefale SqlClient fremfor OleDb til SQLServer fordi SqlClient er
100% .NET (snakker TDS over netværk med SQLserveren) mens OleDb bruger native/unmaneged
kode via COM.
Avatar billede mach3 Nybegynder
17. januar 2005 - 00:10 #8
arne_v >> hvad mener du med
"2) Kald den med første argument som en valid SQLServer connection string."
Avatar billede arne_v Ekspert
17. januar 2005 - 00:13 #9
Du retter

OleDbConnection connSystem = new OleDbConnection          (strPath);     

til

SqlConnection connSystem = new SqlConnection          (strPath);     

men derudover skal strPath (først argument til Test metoden) jo også
ændres fra en OLE DB conection string til en SQLserver connection string.
Avatar billede mach3 Nybegynder
17. januar 2005 - 00:19 #10
arne_v >> Det er kanon du kan svarer så hurtigt - kigger lige på det :-)
Avatar billede mach3 Nybegynder
17. januar 2005 - 01:09 #11
giv et svar med arne_
Avatar billede arne_v Ekspert
17. januar 2005 - 07:28 #12
ok
Avatar billede arne_v Ekspert
25. februar 2005 - 22:23 #13
...
Avatar billede mach3 Nybegynder
25. februar 2005 - 22:50 #14
anede ikke jeg havde så mange åbne :o)
Avatar billede arne_v Ekspert
25. februar 2005 - 22:52 #15
Prøv at klikke på konto og "Spørgsmål oprettet af dig" og se om der er nogen
uden blå flag ...
Avatar billede mach3 Nybegynder
25. februar 2005 - 23:19 #16
ok tak for tip :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester