Avatar billede jokkejensen Novice
13. december 2005 - 09:14 Der er 7 kommentarer og
2 løsninger

Vedrørende lidt klasser, tror jeg nok

Hej..

Skulle lige forsøge at lave en klasse til database, jeg er ikke lige den store programmør :).. så er der en der gider lige fortælle mig hvor jeg ikke ex kan tilgå DB.CreateConnection() pga "cannot access non static metohod "CreateConnection" in static context"..

lidt kode:

Den jeg har til min webform:
namespace Pierre
{
   
    public class WebForm2 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.DataList dataList;

        private void Page_Load(object sender, System.EventArgs e)
        {
            Pierre.DB.CreateConnection();


min forhåbentligt snart virkende DB klasse:
namespace Pierre
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class DB
    {
        Dbisam.DbisamConnection connection = new Dbisam.DbisamConnection();

        public DB()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public Dbisam.DbisamConnection CreateConnection()
        {
            try
            {
Avatar billede medions Nybegynder
13. december 2005 - 09:19 #1
Prøv og tag udgangspunkt i flg. eksempel:

/*
* Created by SharpDevelop.
* User: RHN
* Date: 16-11-2005
* Time: 11:53
*
* AUTHOR: Rune H. Nielsen
* E-MAIL: rune@medions.dk
*/

using System;
using System.IO;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TNT2NET
{
    /// <summary>
    /// Description of MSSQLData.
    /// </summary>
   
    public class MSSQLData
    {
        public SqlConnection oSQLConn = new SqlConnection();
       
        public MSSQLData()
        {
        }
       
        public void MSSQL_Open()
        {
            oSQLConn.ConnectionString="Server=localhost;Database=tnt_fs;User ID=sa;Password=;Trusted_Connection=False;";
            oSQLConn.Open();
        }
       
        public void MSSQL_Close()
        {
            oSQLConn.Close();
            oSQLConn.Dispose();
        }
       
        public void getAllData(ListView lv)
        { 
            SqlCommand  cmd = new SqlCommand("SELECT DISTINCT(c.SystemID), c.SystemID, c.ShippingDate, c.ConNrTX, a.SenderNameTX, a.SenderPlaceTx, a.SenderStreet1TX, a.SenderCountryTX, a.SenderPostcodeTX, a.ReceiverStreet1TX, a.ReceiverNameTX, a.ReceiverPlaceTx, a.ReceiverStreet1TX, a.ReceiverCountryTX, a.ReceiverPlaceTx, i.WeightNR, i.WidthNR, i.HeightNR, i.DepthNR, i.VolumeNR, c.TotalPackagesNR, i.WeightNR, i.WeightNR FROM [tblCon] c, [tblConAddr] a, [tblConPack] i WHERE c.SystemID = a.SystemID AND c.SystemID = i.SystemID", oSQLConn);           
            cmd.CommandTimeout = 920;
       
            try {
                SqlDataReader SqlDR = cmd.ExecuteReader();
                   
                while (SqlDR.Read())
                {
                    ListViewItem li = new ListViewItem();
                    li.SubItems[0].Text = SqlDR.GetInt32(1).ToString();
                    li.SubItems.Add(SqlDR.GetDateTime(2).ToString());                   
                    lv.Items.Add(li);
                }
               
                SqlDR.Close();
       
            } catch (Exception ee) {
                MessageBox.Show("Fejl \"GLOBAL DATA\": " + ee.ToString());
            }
        }
    }
}


//>Rune
Avatar billede jokkejensen Novice
13. december 2005 - 09:20 #2
kigger lige på det :)
Avatar billede jokkejensen Novice
13. december 2005 - 09:25 #3
Der får jeg samme besked, det jeg ønsker er at kunne genbruge database forbindelserne, så jeg ikke konstant skal skrive det samme tekst.. og let kan skifte DB..

Derfor ønsker jeg fra alle mine webforms at bruge ex DB.Open() som så gerne skulle kunne åbne en vilkårligt databaseforbindelse (specificeret i DB klassen)..

Arbejder på et mindre projekt der snart skal skifte DB, og det ville være åndsvagt ikke at gøre det klar til dette.
Avatar billede arne_v Ekspert
13. december 2005 - 12:44 #4
public Dbisam.DbisamConnection CreateConnection()

er ikke static og s[ kan metoden kun kaldes på en instans
Avatar billede arne_v Ekspert
13. december 2005 - 12:45 #5
Pierre.DB o = new Pierre.DB();
o.CreateConnection();
Avatar billede arne_v Ekspert
13. december 2005 - 12:45 #6
alternativt:

public static Dbisam.DbisamConnection CreateConnection()

så kan du kalde metoden på klassen uden objekt
Avatar billede arne_v Ekspert
13. december 2005 - 12:47 #7
med hensyn til det at skifte database så check evt. teknikken i http://www.eksperten.dk/artikler/694
Avatar billede jokkejensen Novice
13. december 2005 - 19:39 #8
igen er jeg dig points skyldig :)

drop et svar..
Avatar billede arne_v Ekspert
13. december 2005 - 19:46 #9
svar
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