Avatar billede bertelsenbo Nybegynder
04. november 2007 - 21:19 Der er 8 kommentarer og
1 løsning

Hjælp til connectionstring C# MS SQL

Hejsa,

Jeg har leget med noget datasource-binding og min app.config ser således ud:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="ProjektForAlvor.Properties.Settings.ProjektDatabaseForAlvorConnectionString"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProjektDatabaseForAlvor.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Nu vil jeg lave en DAO (Data Access Object)-klasse og vil gerne forbinde til denne database. Men hvordan skal min connectionstring lyde? Suppler også gerne med en lille metode der hiver noget hypotetisk data ud.
Avatar billede arne_v Ekspert
04. november 2007 - 23:08 #1
Prøv:

ConfigurationManager.ConnectionStrings["ProjektForAlvor.Properties.Settings.ProjektDatabaseForAlvorConnectionString"].ConnectionString
Avatar billede ladyhawke Novice
05. november 2007 - 08:26 #2
Brug denne som reference:
http://www.connectionstrings.com/
Avatar billede bertelsenbo Nybegynder
05. november 2007 - 08:45 #3
Kan du ikke hvirvle et lille eksempel op hvor man åbner den givne connection, trækker data ud og lukker den igen?
Avatar billede arne_v Ekspert
05. november 2007 - 14:59 #4
Banalt eksempel:

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

class MainClass
{
    public static void Main(string[] args)
    {
        SqlConnection con = new SqlConnection("Server=ARNEPC3;Integrated Security=SSPI;Database=Test");
        con.Open();
        SqlCommand cmd = new SqlCommand("SELECT f1,f2 FROM t1", con);
        SqlDataReader rdr = cmd.ExecuteReader();
        while(rdr.Read()) {
            int f1 = (int)rdr[0];
            string f2 = (string)rdr[1];
            Console.WriteLine(f1 + " " + f2);
        }
        con.Close();
    }
}
Avatar billede bertelsenbo Nybegynder
05. november 2007 - 19:13 #5
Jeg skal netop ha' hjælp til at implementere min connectionstring i sådan et eksempel. Jeg er newbie til dette.

Jeg kommer fra JAVA og MySQL hvor jeg er vant til at forbinde min lokale MySQL-server, hvorimod jeg skal forbinde til en lokal MDF fil her. (eller hvad?)
Jeg håbede Visual C# Studio Express 2005 var mere intuitiv, og kunne hjælpe med dette.

Arne: Hvis jeg bruger dit eksempel på en naiv måde, så får jeg selvfølgelig fejl.

string ConString = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjektForAlvor.Properties.Settings.ProjektDatabaseForAlvorConnectionString"].ConnectionString);
"The name 'identifier' does not exist in the current context" - Den kender ikke 'ConfigurationManager' referencen.

string ConString = new SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProjektDatabaseForAlvor.mdf;Integrated Security=True;User Instance=True");
'Unrecognized escape sequence' - der ved \ (backslash).

Suk, ak og ve. ADO.NET bliver jeg ikke hurtigt klog på.
Avatar billede arne_v Ekspert
05. november 2007 - 19:32 #6
Den sidste fejl loeses ved:

string ConString = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\ProjektDatabaseForAlvor.mdf;Integrated Security=True;User Instance=True");

eller

string ConString = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProjektDatabaseForAlvor.mdf;Integrated Security=True;User Instance=True");
Avatar billede arne_v Ekspert
05. november 2007 - 19:41 #7
for at bruge ConfigurationManager skal du importere System.Configuration
Avatar billede bertelsenbo Nybegynder
05. november 2007 - 20:49 #8
Kildekode der virker. Her er den så andre måske kan lære af mine begynderfejl.

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Configuration;

namespace ProjektForAlvor
{
    //public sealed class DAO
    public class DAO
    {
        //static readonly DAO instance = new DAO();

    public ArrayList returnList()
    {
        ArrayList liste = new ArrayList();
        //string ConString = ConfigurationManager.ConnectionStrings["ProjektForAlvor.Properties.Settings.ProjektDatabaseForAlvorConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProjektDatabaseForAlvor.mdf;Integrated Security=True;User Instance=True");
        //SqlConnection con = new SqlConnection(ConString);
        con.Open();
        SqlCommand cmd = new SqlCommand("SELECT DBID,NAVN FROM DB_LISTE", con);
        SqlDataReader rdr = cmd.ExecuteReader();
        while(rdr.Read()) {
            //int DB_ID = (rdr.IsDBNull(rdr.GetOrdinal("DB-ID")));
            //int DB_ID = System.Convert.ToInt32(rdr[0]);
            string NAVN = (string)rdr["NAVN"];
            int DB_ID = (int)rdr["DBID"];
            //Console.WriteLine(DB_ID + " " + NAVN);
            liste.Add(NAVN);
            liste.Add(DB_ID);
           
        }
        con.Close();
        return liste;
    }


        public void SaveItem()
        {

        }

        public void SaveListItem()
        {

        }
    }
}

Mange tak arne! Du fortjener uendeligt meget ros, du har altid været der.
Svar for point :)
Avatar billede arne_v Ekspert
05. november 2007 - 20:56 #9
kommer her
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
Computerworld tilbyder specialiserede kurser i database-management

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