Avatar billede beef12 Nybegynder
13. oktober 2004 - 12:28 Der er 10 kommentarer og
1 løsning

odbc connection klasse til MS SQL server

Jeg er lige begyndt med C# og det første jeg vil igang med er at lave en klasse der kan forbinde op imod en MSSQL database, samt lave et forespørgsel.

Jeg vil meget gerne have vist hvordan sådan en klasse konstrueres og hvordan jeg efterfølgende kan fyre en query af via min connection klasse.

Jeg sætter points til 100, da jeg meget gerne vil have det skåret ud i pap, da jeg er helt ny til c# (har dog kodet en del java, så i behøver ikke beskrive hele OOP konceptet for mig ;) ).

På forhånd tak
Avatar billede arne_v Ekspert
13. oktober 2004 - 12:32 #1
Jeg vil anbefale brug af SqlClient fremfor ODBC medmindre du har meget
specielle krav.

Jeg formoder at kender JDBC. .NET data reader minder meget om Java ResultSet.

Eksempel:

using System;
using System.Data;
using System.Data.SqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        SqlConnection con = new SqlConnection("DINPC;Integrated Security=SSPI;database=DinDatabase");
        con.Open();
        SqlCommand sel = new SqlCommand("SELECT * FROM T1", con);
        SqlDataReader rdr = sel.ExecuteReader();
        while(rdr.Read()) {
            int f1 = (int)rdr[0];
            string f2 = (string)rdr[1];
            // brug f1 og f2
      }
        rdr.Close();
        con.Close();
    }
}
Avatar billede arne_v Ekspert
13. oktober 2004 - 12:33 #2
Udover data reader så har .NET nogle high level GUI komponenter som kan gøre
det meget nemmere.

Både win forms og web forms har DataGrid klassen m.fl. (de bruger så
databse klasserne DataSet og SqlDataAdapter).
Avatar billede arne_v Ekspert
13. oktober 2004 - 12:55 #3
Hov jeg fik slettet for meget.

using System;
using System.Data;
using System.Data.SqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        SqlConnection con = new SqlConnection("Server=DINPC;Integrated Security=SSPI;database=DinDatabase");
        con.Open();
        SqlCommand sel = new SqlCommand("SELECT * FROM T1", con);
        SqlDataReader rdr = sel.ExecuteReader();
        while(rdr.Read()) {
            int f1 = (int)rdr[0];
            string f2 = (string)rdr[1];
            // brug f1 og f2
      }
        rdr.Close();
        con.Close();
    }
}
Avatar billede arne_v Ekspert
13. oktober 2004 - 12:58 #4
Med ODBC er det:

using System;
using System.Data;
using System.Data.Odbc;

class MainClass
{
    public static void Main(string[] args)
    {
        OdbcConnection con = new OdbcConnection("Driver={SQL Server};Server=DINPC;Database=DinDatabase;Trusted_Connection=yes;" );
        con.Open();
        OdbcCommand sel = new odbcCommand("SELECT * FROM T1", con);
        OdbcDataReader rdr = sel.ExecuteReader();
        while(rdr.Read()) {
            int f1 = (int)rdr[0];
            string f2 = (string)rdr[1];
            // brug f1 og f2
      }
        rdr.Close();
        con.Close();
    }
}
Avatar billede arne_v Ekspert
13. oktober 2004 - 12:58 #5
Og et svar
Avatar billede beef12 Nybegynder
14. oktober 2004 - 16:20 #6
jeg har desværre ikke en trusted connection, jeg skal angive brugernavn og password, hvad skal jeg så skrive i "New OdbcConnection ?
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:46 #7
OdbcConnection con = new OdbcConnection( "Driver={SQL Server};Server=DINPC;Database=DinDatabase;Uid=dinbruger;Pwd=ditkodeord;" );
Avatar billede beef12 Nybegynder
15. oktober 2004 - 09:14 #8
Jeg takker :-)
Avatar billede beef12 Nybegynder
15. oktober 2004 - 09:27 #9
using System;
using System.Data;
using System.Data.Odbc;

namespace ConsoleApplication1
{
    /// <summary>
    /// Connection class
    /// </summary>
    class Conn
    {
        /// <summary>
        ///
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
           
            OdbcConnection con = new OdbcConnection( "Driver={SQL Server};Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx;" );;
            con.Open();
            OdbcCommand sel = new OdbcCommand("SELECT * FROM USER", con);
            OdbcDataReader rdr = sel.ExecuteReader();
            while(rdr.Read())
            {
                int f1 = (int)rdr[0];
                string f2 = (string)rdr[1];

                Console.WriteLine(f1);
                Console.WriteLine(f2);
            }
            rdr.Close();
            con.Close();
        }
    }
}


Jeg prøver så med det her... Men jeg får en fejl:


An unhandled exception of type 'System.InvalidCastException' occurred in ConsoleApplication1.exe

Additional information: Specified cast is not valid.

Har jeg lavet et eller andet galt Arne?
Avatar billede beef12 Nybegynder
15. oktober 2004 - 09:52 #10
jeg erstattede

int f1 = (int)rdr[0];
string f2 = (string)rdr[1];

Console.WriteLine(f1);
Console.WriteLine(f2);

med

Console.WriteLine( rdr[0].ToString() );
Console.WriteLine( rdr[1].ToString() );

og nu virker skidtet
Avatar billede arne_v Ekspert
15. oktober 2004 - 10:11 #11
Min kode forudsætter at første felt er en INTEGER og andet felt er en VARCHAR.

ToString kan klare alle data typer.
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