Avatar billede moejensen Nybegynder
18. februar 2002 - 13:54 Der er 27 kommentarer og
1 løsning

ASP.NET med C# - database connection som dll eller exe fil

Jeg er helt ny i denne C# verden, men har før arbejdet med ASP. Jeg har fået nedenstående kode til at virke uden problemer:

<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">

public String str;
public String strAccessConn = "Provider=sqloledb; Data Source=********; Initial Catalog=*********; User Id=**; Password=******";
DataSet myDataSet = new DataSet();
int RowCount;

public void Submit_Click(Object sender, EventArgs e)
{
  OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
  OleDbCommand myAccessCommand = new OleDbCommand("SELECT fnavn FROM brugere WHERE bruger='"+LoginBox.Text+"'", myAccessConn);
  OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
  myAccessConn.Open();

  try
  {
    myDataAdapter.Fill(myDataSet, "mytable");
  }
  finally
  {
    myAccessConn.Close();
  }

  RowCount = myDataSet.Tables["mytable"].Rows.Count;
  DataRowCollection dra = myDataSet.Tables["mytable"].Rows;

  foreach (DataRow dr in dra)
  {
    str = dr[0].ToString();
  }

  if (RowCount != 0)
  {
    Message.Text = "Info: " + str;
  }
  else
  {
    Message.Text = "<font color=\"red\">Authentication Failed!</font>";
  }
}
</script>

<html>
<Form runat="server">

<asp:Label runat="server">Login</asp:Label><br>
<asp:TextBox runat="server" id="LoginBox" /><br><br>

<asp:Label runat="server">Password</asp:Label><br>
<asp:TextBox runat="server" id="PasswordBox" TextMode="Password" />

<asp:Button runat="server" OnClick="Submit_Click" Text="Go!" /><br><br>

<asp:Label id="Message" runat="server" />
</Form>
</html>


Jeg kunne bare godt tænke mig at få selve database connectionen ud i en compileret fil, så jeg bare kalder filen fra min ASP side. Kan dette lade sig gøre, og i så fald hvordan.
Avatar billede a1a1 Novice
18. februar 2002 - 14:12 #1
ja det kan man
ca..

en fil inc.cs:

public class NFOfuncs : Page {
    public string sConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA Source=e:\\db.mdb";
}

anden fil test.aspx:
<%@ Page Language="C#" Inherits="NFOfuncs" Src="inc.cs" Description="MainPage" %>


i filen test.aspx kan du nu bare bruge sConn...

filen er bliver jo compilet....?
Avatar billede moejensen Nybegynder
18. februar 2002 - 14:25 #2
det var ikke lige det jeg tænkte på, for på den måde kan jeg altid bruge et download progtam, og hente aspx filen, og læse evt koder til databasen, jeg ville gerne have en dll eller en exe fil, hvor jeg kunne kalde metoder i.
Avatar billede a1a1 Novice
18. februar 2002 - 14:39 #3
man kan ikke hente aspx filen.....

inc.cs bliver compilet første gang den bliver kaldt i den fil kan du så have ting i.
Avatar billede a1a1 Novice
18. februar 2002 - 14:41 #4
du kan heller ikke hente .cs filen
Avatar billede a1a1 Novice
18. februar 2002 - 14:43 #5
hvis du vil have en dll eller exe, kig her

http://activedeveloper.dk/quickstart/aspplus/doc/businessobjs.aspx
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:01 #6
jeg kan ikke få det til at virke, har du et eksempel jeg kan prøve
Avatar billede a1a1 Novice
18. februar 2002 - 15:08 #7
hvad kan du ikke få til at virke..?

det første eller det sidste..:)
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:16 #8
det hele, kan du prøve at lave mig et eksempel med den kode jeg skrev i starten, hvor nedenstående kode står i en fil test.aspx:

Du er her : Eksperten : Programmering : ASP.NET : ASP.NET med C# - database connection som dll eller exe fil :



ASP.NET med C# - database connection som dll eller exe fil    60 point fra moejensen

Jeg er helt ny i denne C# verden, men har før arbejdet med ASP. Jeg har fået nedenstående kode til at virke uden problemer:

<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">

public String str;
public String strAccessConn = "Provider=sqloledb; Data Source=********; Initial Catalog=*********; User Id=**; Password=******";
DataSet myDataSet = new DataSet();
int RowCount;

public void Submit_Click(Object sender, EventArgs e)
{
  OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
  OleDbCommand myAccessCommand = new OleDbCommand("SELECT fnavn FROM brugere WHERE bruger='"+LoginBox.Text+"'", myAccessConn);
  OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
  myAccessConn.Open();

  try
  {
    myDataAdapter.Fill(myDataSet, "mytable");
  }
  finally
  {
    myAccessConn.Close();
  }

  RowCount = myDataSet.Tables["mytable"].Rows.Count;
  DataRowCollection dra = myDataSet.Tables["mytable"].Rows;

  foreach (DataRow dr in dra)
  {
    str = dr[0].ToString();
  }

  if (RowCount != 0)
  {
    Message.Text = "Info: " + str;
  }
  else
  {
    Message.Text = "<font color=\"red\">Authentication Failed!</font>";
  }
}
</script>

<html>
<Form runat="server">

<asp:Label runat="server">Login</asp:Label><br>
<asp:TextBox runat="server" id="LoginBox" /><br><br>

<asp:Label runat="server">Password</asp:Label><br>
<asp:TextBox runat="server" id="PasswordBox" TextMode="Password" />

<asp:Button runat="server" OnClick="Submit_Click" Text="Go!" /><br><br>

<asp:Label id="Message" runat="server" />
</Form>
</html>


og nedenstående står i en cs eller dll fil:

<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">

public String str;
public String strAccessConn = "Provider=sqloledb; Data Source=********; Initial Catalog=*********; User Id=**; Password=******";
DataSet myDataSet = new DataSet();
int RowCount;

public void Submit_Click(Object sender, EventArgs e)
{
  OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
  OleDbCommand myAccessCommand = new OleDbCommand("SELECT fnavn FROM brugere WHERE bruger='"+LoginBox.Text+"'", myAccessConn);
  OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
  myAccessConn.Open();

  try
  {
    myDataAdapter.Fill(myDataSet, "mytable");
  }
  finally
  {
    myAccessConn.Close();
  }

  RowCount = myDataSet.Tables["mytable"].Rows.Count;
  DataRowCollection dra = myDataSet.Tables["mytable"].Rows;

  foreach (DataRow dr in dra)
  {
    str = dr[0].ToString();
  }

  if (RowCount != 0)
  {
    Message.Text = "Info: " + str;
  }
  else
  {
    Message.Text = "<font color=\"red\">Authentication Failed!</font>";
  }
}
</script>
Avatar billede a1a1 Novice
18. februar 2002 - 15:30 #9
i din nuværende .aspx fil...

udskift
<%@ Page Language="C#" Debug="true" %>
med
<%@ Page Language="C#" Inherits="NFOfuncs" Src="inc.cs" Description="MainPage" %>

inc.cs fil:

using System;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public class NFOfuncs : Page {
    public string sConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA Source=e:\\db.mdb";
}

du kan så bruge sConn fra din .aspx side, istedet for strAccessConn

du kan så "bare" oprette flere metoder / filer....

fx
using System;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public class NFOfuncs : Page {
    public string sConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA Source=e:\\db.mdb";

public string StringToDB(string s) {
// UrlEncode strings
s = s.Replace("'", "''");
return s;
}

}
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:37 #10
Jeg ved ikke helt hvad der er galt, men jeg kan ikke se hvordan den kode jeg har ovenfor bliver til det du skriver.
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:40 #11
Okay bare drop det eksempel, jeg har lavet et nyt, som er lidt mere simpelt:

test.aspx:

<%@ Page Language="C#" %>

<script runat="server">

    void test1(Object sender, EventArgs e)
    {
            Test.test mytest = new Test.test();
            String str = mytest.getNavn();

                Message.Text = str;
            }
        }
    }

</script>

test.cs:

using System;
using System.Configuration;
namespace Test {
    public class test {
        public getNavn()
        {
            private str = "KAsper";
            return str;
        }
    }
}



Det vil heller ikke virke
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:42 #12
okay, en lille fejl, test.aspx ser således ud:

<%@ Page Language="C#" %>

<script runat="server">

    void test1(Object sender, EventArgs e)
    {
            Test.test mytest = new Test.test();
            String str = mytest.getNavn();
            Message.Text = str;
       
    }

</script>

jeg får følgende compilerfejl:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)

Source Error:



Line 5:      void test1(Object sender, EventArgs e)
Line 6:      {
Line 7:              Test.test mytest = new Test.test();
Line 8:              String str = mytest.getNavn();
Line 9:              Message.Text = str;

HVORDAN DEFINERE JEG ET NAMESPACE
Avatar billede a1a1 Novice
18. februar 2002 - 15:46 #13
din nuværende .aspx fil...

udskift
<%@ Page Language="C#" Debug="true" %>
med
<%@ Page Language="C#" Inherits="NFOfuncs" Src="inc.cs" Description="MainPage" %>

namespace test = Public Class test
Avatar billede moejensen Nybegynder
18. februar 2002 - 15:56 #14
De ser nu således ud:

test.aspx:

<%@ Page Language="C#" Inherits="NFOfuncs" Src="test.cs" Description="MainPage" %>
namespace test = Public Class test
<script runat="server">

    void test1(Object sender, EventArgs e)
    {
            Test.test mytest = new Test.test();
            String str = mytest.getNavn();
            Message.Text = str;
       
    }

</script>


test.cs:

using System;
using System.Configuration;
namespace Test
{
        public class test
        {
            public string getNavn()
            {
                string str = "KAsper";
                return str;
            }
        }
}

men jeg får nu følgende fejl:

Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: The base type 'NFOfuncs' does not exist in the source file 'test.cs'.

Source Error:


Line 1:  <%@ Page Language="C#" Inherits="NFOfuncs" Src="test.cs" Description="MainPage" %>
Line 2:  namespace test = Public Class test
Line 3:  <script runat="server">
Avatar billede a1a1 Novice
18. februar 2002 - 16:02 #15
<%@ Page Language="C#" Inherits="NFOfuncs" Src="test.cs" Description="MainPage" %>
skal være
<%@ Page Language="C#" Inherits="test" Src="test.cs" Description="MainPage" %>

i test.cs
public class NFOfuncs : Page {
du skal vel bruge
public class test: Page {
Avatar billede odegaard Nybegynder
18. februar 2002 - 16:09 #16
hmm... Dette har jeg gjort massere af gange.
Jeg har lavet en DLL (ActiveX) i Visual Studio. Dette er rimeligt nemt og virker som det altid har gjort. Her putter jeg så ALLE funktioner der har med databasen at gøre. Denne inkluderer jeg så i min aspx-side, hvorved jeg får adgang til de funktioner der er i DLL'en. Funktionen kunne f.eks. smide et dataset tilbage som resultat på en søgning.

/Odegaard
Avatar billede moejensen Nybegynder
18. februar 2002 - 16:10 #17
får en ny fejl nu:

filerne ser nu således ud:

test.aspx:

<%@ Page Language="C#" Inherits="test" Src="test.cs" Description="MainPage" %>
namespace test = Public Class test
<script runat="server">

    void test1(Object sender, EventArgs e)
    {
            Test.test mytest = new Test.test();
            String str = mytest.getNavn();
            Message.Text = str;
       
    }

</script>


test.cs:

using System;
using System.Configuration;
namespace Test
{
        public class test: Page {
            public string getNavn()
            {
                string str = "KAsper";
                return str;
            }
        }
}


Fejlen er:

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0246: The type or namespace name 'Page' could not be found (are you missing a using directive or an assembly reference?)

Source Error:



Line 3:  namespace Test
Line 4:  {
Line 5:          public class test: Page {
Line 6:              public string getNavn()
Line 7:              {
Avatar billede a1a1 Novice
18. februar 2002 - 16:17 #18
hvorfor bliver du ved med at skrive namespace test????????

min fil:
using System;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public class NFOfuncs : Page {
    public string sConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA Source=e:\\db.mdb";

public string StringToDB(string s) {
// UrlEncode strings
s = s.Replace("'", "''");
return s;
}

}
Avatar billede a1a1 Novice
18. februar 2002 - 16:20 #19
udskift:
public class NFOfuncs : Page {
med
public class test: Page {

test er navnet på classen som du definere i
<%@ Page Language="C#" Inherits="test" Src="test.cs" Description="MainPage" %>
(Inherits)
Avatar billede moejensen Nybegynder
18. februar 2002 - 16:24 #20
Jeg er lidt ligeglad med hvordan din fil ser ud, kan du ikke vise mig hvad jeg skal gøre med mit eksempel, for at få det ti at virke?? Det jeg prøver at lave er en fil der hedder test.cs, hvori der er en metode der returnere en string. Så vil jeg have en test.aspx, hvor jeg kalder metoden i test.cs, og får skrevet string'en ud.
Avatar billede a1a1 Novice
18. februar 2002 - 16:32 #21
hvorfor bliver du ved med at skrive namespace test????????

skal være

public class test: Page {

LÆS DOG MIN FIL OG OMSKRIV SÅ DIN HAR MINE TING.....

PRØV EVT MED MIN FIL
Avatar billede moejensen Nybegynder
18. februar 2002 - 16:35 #22
selvom jeg ændre det, så får jeg stadig denne fejl:

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0246: The type or namespace name 'Page' could not be found (are you missing a using directive or an assembly reference?)

Source Error:



Line 5:          public class test: Page {
Line 6:              public string getNavn()
Line 7:              {
Avatar billede a1a1 Novice
18. februar 2002 - 16:38 #23
du har ikke dem her med vel????

using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
Avatar billede moejensen Nybegynder
18. februar 2002 - 16:40 #24
for at du lige er helt sikker på hvad jeg har, så her kommer filerne lige en gnag til.

test.aspx:

<%@ Page Language="C#" Inherits="test" Src="test.cs" Description="MainPage" %>
<script runat="server">

    void test1(Object sender, EventArgs e)
    {
            Test.test mytest = new Test.test();
            String str = mytest.getNavn();
            Message.Text = str;
       
    }

</script>

test.cs:

using System;
using System.Configuration;
public class test: Page
{
    public string getNavn()
    {
        string str = "KAsper";
        return str;
    }
}
Avatar billede a1a1 Novice
18. februar 2002 - 16:41 #25
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

i din test.cs
Avatar billede a1a1 Novice
18. februar 2002 - 16:47 #26
2 filer der DUR
test.aspx:
<%@ Page Language="C#" Inherits="test" Src="test.cs" Description="MainPage" %>
<script runat="server">

    void Page_Load(Object sender, EventArgs e)
    {
            test mytest = new test();
            String str = mytest.getNavn();
            Message.Text = str;
       
    }

</script>

<asp:label id="Message" runat="server" />

test.cs:

using System;
using System.Configuration;

using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls; 

public class test: Page
{
    public string getNavn()
    {
        string str = "KAsper";
        return str;
    }
}

har jeg så ikke snart vundet nogle point...:)
Avatar billede moejensen Nybegynder
18. februar 2002 - 16:58 #27
takker, nu virker det
Avatar billede a1a1 Novice
18. februar 2002 - 17:00 #28
jubiii.:)

selv tak.....
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