Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Arbeta med classer och databaser

Postades av 2003-01-18 11:56:26 - Anna-Karin Söderberg, i forum c# (c-sharp), Tråden har 6 Kommentarer och lästs av 964 personer


Jag har letat efter exempel som visar hur jag kan lägga min databaskoppling i en egen class och anropa den i en annan class, men jag har inte hittat några vettiga fungerande exempel, är det någon som vet hur man ska lösa problemet?
Mycket är för beta 1 &2 eller så omständiga att man inte ser vart eller hur man kan använda dem.

Min tanke är ju att jobba med classer på samma sätt som moduler i VB.
dvs ha ett presentations lager, ett lager som hanterar data och ett databaslager som sköter kopplingen.

/Anna-Karin


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 17:01:13 - André Isaksson

Kolla den här tråden på webforum: http://www.webforum.nu/showthread.php?s=&threadid=61076


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 19:07:26 - Anna-Karin Söderberg


Jag har läst den där tråden och den koden är för asp.net och jag kodar windows applikation i C#. Det är just den där koden som jag sitter och försöker få att fungera, vilket den inte gör.

/Anna-Karin


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 19:23:56 - Anna-Karin Söderberg


Nu ser min kod ut så här:
Form1,kod
Jag har skapat en OleDBConnection kallad conn där.
<code>
private void cmdLogin_Click(object sender, System.EventArgs e)
{
Member myMember = new Member();
myMember.Login(txtPWD.Text);
if(myMember.Login(txtPWD.Text))
{
myLabel.Text = "du är inloggad";
}
else
{
myLabel.Text = "försök igen" ;
}
}
</code>
Members klassen ser ut så här.
<Code>
namespace Reggmed
{
public class Member : Reggmed.OleDbData
{
public Member() //: base("conn)
{ }
public bool Login(string Password)
{
// The Sql Statement that fetches the DataReader
string SqlStatement = "SELECT UID,PWD FROM adm_admin WHERE PWD ='" + Password + "'";
OleDbDataReader DataReader = RetriveDataReader(SqlStatement);
if(DataReader.Read() )
{
return DataReader["PWD"].ToString() == Password ? true : false;
}
else
{
return false;
}

}
}
}
</code>

Databasklassen ser ut så här, och det är här det smäller, antagligen för att jag inte fattar hur den ska få tag på conn från form1.
<code>
namespace Reggmed
{
public abstract class OleDbData
{
protected OleDbConnection conn;
/// <summary>
/// A valid connectionstring
/// </summary>
/// <param name="ConnectionString"></param>
public OleDbData()
{
OleDbConnection conn = new OleDbConnection ("conn");
}
private OleDbCommand BuildCommand(string SqlStatement)
{

OleDbCommand Command = new OleDbCommand(SqlStatement, conn);
Command.CommandType = CommandType.Text;
return Command;
}
protected OleDbDataReader RetriveDataReader(string SqlStatement)
{
OleDbDataReader DataReader;
conn.Open();
OleDbCommand Command = BuildCommand(SqlStatement);
DataReader = Command.ExecuteReader(CommandBehavior.CloseConnection);
return DataReader;
}
}
}
</code>

/Anna-Karin


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 19:33:25 - Fredrik Salomonsson

Hej.

Ändra:
Form:


Member myMember = new Member();
till
Member myMember = new Member("Min constring"); //skicla med en constring du vill

-------------------------------------------
Member:

public Member() //: base("conn)
{ }

till:
//denna klassen ärver OleDbData
public Member(string connectionstring) : base(connectionstring) //kontruktorn tar emot strängen och skickar den vidare till sin basklass
{ }

-----------------------------------
OleDbData:


public OleDbData()
{
OleDbConnection conn = new OleDbConnection ("conn");
}

till

public OleDbData(string connectionstring) //tar emot consträng i konstruktorn
{
OleDbConnection conn = new OleDbConnection (connectionstring);
}


---------------------------------
Detta borde få dig att komma en bit på vägen.

Skriver ur minnet så det kan fortfarande förekomma fel. (Bäst att tillägga det...)

EDIT:
Slopa det där med OleDbConnection, skicka en sträng istället...
Eller för all del, gör om hela kedjan... vilket du vill


//fredda


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 19:42:37 - Fredrik Salomonsson

Hej igen...

Ändra också detta:

if(DataReader.Read() )
{
return DataReader["PWD"].ToString() == Password ? true : false;
}
else
{
return false;
}

till
bool val;


if(DataReader.Read() )
{
val = DataReader["PWD"].ToString() == Password ? true : false;
}
else
{
val = false;
}
DataReader.Close(); //tror jag det är man stänger den med.. Det viktigaste är att den stängs...
return val;

//fredda


Svara

Sv: Arbeta med classer och databaser

Postades av 2003-01-18 21:15:21 - Fredrik Salomonsson

hej igen...

Detta fungerar hos mig:
Observera att jag var tvungen att implementera Member.Login lite annorlunda.
Du bör ju anvädnda variabeln password, (det gör ju inte jag nu...)
Hade ingen databas med användare att testa på.

Observera också ändringen i OleDbDatas konstruktor: "this...."

<code>
using System;
using System.Data.OleDb;
using System.Data;

namespace Labb
{

public class Member : OleDbData
{
public Member(string constr) : base(constr)
{ }
public bool Login(string Password)
{

bool res = false;
// The Sql Statement that fetches the DataReader
string SqlStatement = "SELECT * FROM Authors WHERE Au_id = 244";
OleDbDataReader DataReader = RetriveDataReader(SqlStatement);
if(DataReader.Read() )
{
res = DataReader["Au_id"].ToString() == "244" ? true : false;
}
DataReader.Close();
return res;
}
}



public abstract class OleDbData
{
protected OleDbConnection conn;
/// <summary>
/// A valid connectionstring
/// </summary>
/// <param name="ConnectionString"></param>
public OleDbData(string strcon)
{
//OBSERVERA ÄNDRINGEN
this.conn = new OleDbConnection(strcon);
}
private OleDbCommand BuildCommand(string SqlStatement)
{

OleDbCommand Command = new OleDbCommand(SqlStatement, conn);
Command.CommandType = CommandType.Text;
return Command;
}
protected OleDbDataReader RetriveDataReader(string SqlStatement)
{
OleDbDataReader DataReader;
conn.Open();
OleDbCommand Command = BuildCommand(SqlStatement);
DataReader = Command.ExecuteReader(CommandBehavior.CloseConnection);
return DataReader;
}
}

}


</code>

I formuläret skriver jag såhär:

<code>
string db = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\src\TestDBs\BIBLIO2000.mdb;Persist Security Info=False";

Member m = new Member(db);

MessageBox.Show(m.Login("Password").ToString());

</code>


Hoppas du får till det.

//fredda


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 154
27 952
271 704
616
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies