Avatar billede uhrbrand Nybegynder
04. maj 2005 - 13:46 Der er 17 kommentarer og
1 løsning

.NET newbie / db

Hej Eksperter.

Jeg sidder og skal lave noget i .NET på en IIS der skal connecte til en MSSQL DB. Jeg er helt ny i .NET

Det er noget med at man selv kan vælge om man vil lave tingene i C#/ASP ?

Jeg har lavet en fil der prøver at connecte til databasen med noget C# kode.
db.aspx:
<%
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;"
conn.Open();
%>

Den brokker sig allerede ved første ord "using". Burde denne fil hedde noget andet end .aspx?

Kan i fortælle mig hvornår filer skal hedde .aspx og .cs?

Jeg har ikke adgang til commandline på serveren, så jeg kan ikke håndcompile.

I må meget gerne hjælpe mig med at få styr på forskellen mellem .cs .aspx C#. Og helst ville jeg gerne have en DB class så man har databasefuktionaliteten samlet i en fil/objekt, ligesom i php:
<?php
include("db.php");
$db=new db();
$db->query("select navn from test");
while($db->nextRecord()){
  print $db->rec[navn];
}
?>

I overstående PHP eksempel inkluderes en PHP DB class fil med de funktioner man har brug for indbygget. Kan det lade sig gøre i C#/MSSQL?

På forhånd mange tak!
Avatar billede arne_v Ekspert
04. maj 2005 - 14:03 #1
Lav en:

<%@ Import Namespace="System.Data.SqlClient" %>
Avatar billede arne_v Ekspert
04. maj 2005 - 14:04 #2
<% %> er .aspx

det er den rene kode i codebehind du vil kaldes .aspx.cs (eller bare .cs)
Avatar billede arne_v Ekspert
04. maj 2005 - 14:06 #3
det er ikke "the ASP.NET way" at blande HTML og kode på den måde
Avatar billede arne_v Ekspert
04. maj 2005 - 14:08 #4
men du kan godt gøre det

jeg har følgende liggende på lager (dog ASP.NET/VB.NET):

<%@ Import Namespace="System.Data.OleDb" %>
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<%
    Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=")
    con.Open
    Dim sel As OleDbCommand = New OleDbCommand ("SELECT * FROM T1", con)
    Dim rdr As OleDbDataReader = sel.ExecuteReader
    While rdr.Read
%>
    <tr>
    <td><%=rdr(0)%></td>
    <td><%=rdr(1)%></td>
    </tr>
<%
    End While
    rdr.Close
    con.Close
%>
</table>
Avatar billede uhrbrand Nybegynder
04. maj 2005 - 14:29 #5
Hej Arne. Tak for dit hurtige svar.

Hvis serveren bruger ODBC betyder det så at jeg skal benytte OleDbConnection eller SqlConnection?

Skal jeg ændre provider i connectionstring?
Jeg skal ikke connecte til en lokal Access mdb-fil men en MSSQL server.

Jeg har prøvet at ændre connection stringen til:
"Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;"
(Initial Catalog har jeg sat til navnet på databasen)

Jeg har indsat følgende i toppen:
<%@ Page Language="vb" Debug="true" %>
og jeg får følgende fejlbesked:

Cannot start your application. The workgroup information file is missing or opened exclusively by another user.

Har det noget med web.config at gøre, eller er det noget helt andet?
Avatar billede uhrbrand Nybegynder
04. maj 2005 - 14:40 #6
Jeg kan oprette en connection i normal asp der virker med:

Dim objConn
Dim rs
Set objConn = Server.CreateObject("ADODB.Connection"
set rs=Server.CreateObject("ADODB.Recordset")
ObjConn.Open "Driver={SQL Server};Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx;"
Avatar billede arne_v Ekspert
04. maj 2005 - 14:49 #7
SqlConnection = SQLServer
OleDbConnection = et eller andet med en OLE DB provider
OdbcConnection = et eller andet med en ODBC driver

foretræk fra oven af
Avatar billede arne_v Ekspert
04. maj 2005 - 14:50 #8
Til SQLServer vil man normalt bruge:

        SqlConnection con = new SqlConnection("server=ARNEPC2;Integrated Security=SSPI;database=master");
        con.Open();
Avatar billede arne_v Ekspert
04. maj 2005 - 14:50 #9
(ret server og database navn)
Avatar billede uhrbrand Nybegynder
04. maj 2005 - 17:37 #10
Tak Arne. Nu kan jeg connecte!


db_vb.aspx:

<%@ Page Language="VB" debug="true" %>
<%@ import Namespace="System.Data.SqlClient" %>

<%
Dim conn As SqlConnection = New SqlConnection()

conn.connectionString="Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx"
conn.Open()

Dim cmd as new SqlCommand("select * from test",conn)

Dim myReader As SqlDataReader=cmd.ExecuteReader()
Try
  While myReader.Read()
    Response.Write((myReader.GetInt32(0).ToString &", "& myReader.GetString(1)) &"<br>")
  End While

  Finally
    myReader.Close()
End Try

conn.Close()
%>



db_cs.aspx:

<%@ Page Language="C#" debug="true" %>
<%@ import Namespace="System.Data.SqlClient" %>

<%
String connString="Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx";
SqlConnection conn=new SqlConnection(connString);
SqlCommand myCommand=new SqlCommand("select * from test",conn);
conn.Open();

SqlDataReader myReader=myCommand.ExecuteReader();
try{
  while(myReader.Read()){
    Response.Write(myReader.GetInt32(0)+", "+ myReader.GetString(1) +"<br>");
  }
}
finally {
  myReader.Close();
  conn.Close();
}
%>
Avatar billede uhrbrand Nybegynder
04. maj 2005 - 17:38 #11
Men hvordan laver jeg en slags containerfil der indeholder databasforbindelsen og funktioner som query(), som jeg kan inkludere i toppen af alle mine normale filer?

Jeg har lavet følgende helt simple kode for at komme i gang, men ved ikke helt hvordan jeg skal gribe det an.
Skal koden også være i en .aspx fil eller en .asmx? Hvordan inkluderer jeg den i starten af mine normale filer?

namespace dbtest.DB{
  public class DB{

    const string DBConnStr = "Server=xxx;Database=xxx;Uid=xxx;Pwd=xxx";

    public static string GetConnStr(){
      return DBConnStr;
    }
  }
}

Indtil videre vil jeg bare have styr på skelettet af den og hvordan den inkluderes. Så kan jeg bygge videre på den bagefter.

På forhånd tak igen!
Avatar billede arne_v Ekspert
04. maj 2005 - 18:09 #12
Den laver du i en seperat .cs fil, som du compiler til en .dll fil og deployer
til din web apps bin dir
Avatar billede uhrbrand Nybegynder
11. maj 2005 - 12:51 #13
Hej igen. Du må undskylde der går så længe, men jeg roder kun med det om onsdagen.

Jeg tror ikke jeg har adgang til at kunne compile på serveren. Jeg har kun adgang til et lille share som er den mappe hjemmesiden ligger i (f.eks. http://server/share/)

Kan man lave en db class med en .aspx fil?
Avatar billede uhrbrand Nybegynder
11. maj 2005 - 13:06 #14
Sidst fik vi lavet en connection til databasen der virkede.

Jeg kunne godt tænke mig en db-fil, der indeholdt alle normale db metoder (query,numrows,nextRecord), man kunne inkludere i toppen af alle sine filer.

Hvordan kan det gøres?

På forhånd mange tak!
Avatar billede arne_v Ekspert
13. maj 2005 - 21:28 #15
Det gør man i ASP men det gør man ikke i ASP.NET - i ASP.NET laver du en util.cs
som du compiler til util.dll og putter i bin dir - så kan alle dine .aspx
og .aspx.cs kode bruge de klasser der er i util
Avatar billede arne_v Ekspert
13. maj 2005 - 21:28 #16
og et svar
Avatar billede arne_v Ekspert
28. maj 2005 - 16:55 #17
uhrbrand ??
Avatar billede uhrbrand Nybegynder
01. juni 2005 - 16:54 #18
Hej igen Arne_v. Sorry ventetiden.

Tak for hjælpen!

Jeg føler desværre ikke helt jeg fik styr på hvordan jeg fixer det hele i .NET, så nu laver jeg det i normal ASP, hvilket indtil videre er ok. Ville bare være frækt at prøve noget nyt (helst hvor variable skal være declared og hvor de kun findes i det rigtige scope), men der går for lang tid med at sætte sig ind i det. Måske kan jeg konvertere dele af det til .NET på et senere tidspunkt.

Mvh. Uhrbrand.
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
Kurser inden for grundlæggende programmering

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