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


Öppna mdf eller mdb-filer

Postades av 2003-11-27 18:53:32 - Benni Svensson, i forum c# (c-sharp), Tråden har 7 Kommentarer och lästs av 925 personer

JAg håller på med ett lite programm för att kolla lite OleDbSchemaGuid osv.
Jag vill alltså kunna kolla både mdb och mdf.
Jag har dock problem med mdf...
<code>
string exten = filnamn.Substring(filnamn.Length-3,3);
MessageBox.Show(exten);
if(exten=="mdb")
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filnamn +";Persist Security Info=False");
con.Open();
}
else if(exten=="mdf")
{
SqlConnection con = new SqlConnection("server=(SAWDATA\\SAWDATA)\\NetSDK;database=" + filnamn +";Trusted_Connection=yes");
con.Open();
}
label1.Text="Öppnad databas: " +filnamn;
System.Data.DataTable dt ;
if(radioButton1.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
dataGrid1.DataSource = dt;
}
</code>
Detta ger mig två problem.
1) Min connection med SQL Servern är cass.
2)När variablen con ligger inne i en if-sats får jag följande fel..
<code>
E:\C#-koder\Samples1\Samples1\Form5.cs(227): The type or namespace name 'con' could not be found (are you missing a using directive or an assembly reference?)
</code>
Några förslag för att åtgärda detta?


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 08:07:15 - Johan Bovin

Är ingen stjärna på att koppla sig mot databaser... och definitivt ingen stjärna på sql-server, men där kopplar du dig väl inte mot själva filen utan vad databasen heter?
Jag har antagit att din server bara heter SAWDATA...

Att du får ditt felmeddelande beror på att con inte längre finns i det scopet. Den du vill använda är väl OleDbConnection con och inte SqlConnection con? Men hur kan programmet se det? Antingen får du använda två olika namn på kopplingarna eller flytta upp den undre if-stasen till den första.
<code>
string exten = Path.GetExtension(filnamn).ToLower();
MessageBox.Show(exten);
System.Data.DataTable dt ;
if(exten==".mdb")
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filnamn +";Persist Security Info=False");
con.Open();
if(radioButton1.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
dataGrid1.DataSource = dt;
}
}
else if(exten==".mdf")
{
SqlConnection con = new SqlConnection("server=SAWDATA;database=" + Path.GetFileNameWithoutExtension(filnamn) +";Trusted_Connection=true");
con.Open();
}
label1.Text="Öppnad databas: " +filnamn;
</code>
eller förslag 2:

<code>
string exten = Path.GetExtension(filnamn).ToLower();
MessageBox.Show(exten);
System.Data.DataTable dt ;
OleDbConnection accessCon=null;
SqlConnection sqlCon=null;

if(exten==".mdb")
{
accessCon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filnamn +";Persist Security Info=False");
accessCon.Open();

}
else if(exten==".mdf")
{
sqlCon = new SqlConnection("server=SAWDATA;database=" + Path.GetFileNameWithoutExtension(filnamn) +";Trusted_Connection=true");
sqlCon.Open();
}
label1.Text="Öppnad databas: " +filnamn;

if(radioButton1.Checked && accessCon!=null)
{
dt = accessCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
dataGrid1.DataSource = dt;
}
</code>

För connectionstrings kolla även: http://www.connectionstrings.com http://www.connectionstrings.com

En bit på vägen kanske...


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 12:45:50 - Benni Svensson

Naturligtvis, man skall ju inte peka på en path utan ett filnamn, så dumt.
Nu skulle jag alltså splitta upp filnamnet. Detta hittade jag:
<code>
string hela = openFileDialog1.FileName;

string[] delar;

delar = hela.Split('\\');
</code>
Men hur skall jag få tag på enbart filnamnet här?
[REDIGERAT]
Det första problemet är löst:
<code>
string exten = Path.GetExtension(filnamn).ToLower();

string dela=Path.GetFileName(filnamn) ;

string namn = dela.Replace(exten,"");

</code>
Men nu kommer ett annat.
<code>
E:\C#-koder\Samples1\Samples1\Form5.cs(237): 'System.Data.SqlClient.SqlConnection' does not contain a definition for 'GetOleDbSchemaTable'
</code>
Fad jag försöker att göra är, oavset om det är en mdb-fil eller mdf fil så ville jag titta på dem via GetOleDbSchemaTable.
Mdb-filerna är inga problem, därimot mdf.
Jag gjorde föra året en liknande app i VB och det fungerade kanonbr. Tyvärr så förlorade jag alla mina koder vid en krach (utan backup narturligtvis)
Går det att göra såhär?


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 13:07:53 - Johan Bovin

för att få ut filnamnet kan man använda sig av System.IO.Path.GetFileName(pathenTillFilen);

Jag vet inte riktigt vad du menar med att man inte skall peka på en path men kolla på länken som inte kom med förut...
Mot en sql-server kopplar man sig väl inte mot filen utan mot "databasen"...
Typ server/dbnamn...


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 13:33:53 - Magnus Gladh

Det betyder ju att SqlCOnnection inte har någon GetOleDbSchema() vilket är rätt logiskt att Sqls driver inte har något OleDbSchema.

Men du kan ju använda dig av OleDbConnection mot SqlServern också, och då kommer du få tillgång till denna method.

- M


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 15:16:32 - Benni Svensson

Är det då rätt att skriva så här:
<code>
SqlConnection con = new OleDbConnection("server=(SAWDATA\\SAWDATA)\\NetSDK;database=" + namn +";Trusted_Connection=yes");
</code>
Servernamnet = SAWDATA\SAWDATA
namn = MelodiStatestikSQL
Är det rätt?


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 15:34:23 - Magnus Gladh

Använder du OLEDB måste du ange providern (har jag för mig) men exempel finns på www.connectionstrings.com

Där väljer du OleDB och SQL Server.

- M


Svara

Sv: Öppna mdf eller mdb-filer

Postades av 2003-11-28 16:35:02 - Benni Svensson

Tack Magnus, nu blev det kanonbra.
Dock återstår ett irriterande problem, det med min variabel dt.
Här är hela koden:
<code>
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "C:\\"
openFileDialog1.Filter = "Access databasfil (*.mdb)|*.mdb|SQL Server filer (*.mdf)|*.mdf" ;
openFileDialog1.Title = "Öppna en databasfil";
openFileDialog1.FilterIndex =1 ;
openFileDialog1.RestoreDirectory = true ;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string filnamn =openFileDialog1.FileName;
string hela = openFileDialog1.FileName;
label1.Text="Försöker att öppna databasen";
dataGrid1.Refresh();
try
{
string exten = Path.GetExtension(filnamn).ToLower();
string dela=Path.GetFileName(filnamn) ;
string namn = dela.Replace(exten,"");
System.Data.DataTable dt ;
if(exten=="mdb")
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filnamn +";Persist Security Info=False");
con.Open();
}
else if(exten=="mdf")
{
OleDbConnection con = new OleDbConnection("Provider=sqloledb;Data Source=SAWDATA\\SAWDATA;Initial Catalog=" + namn +";Integrated Security=SSPI;");
con.Open();
}
label1.Text="Öppnad databas: " +filnamn;
if(radioButton1.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
dataGrid1.DataSource = dt;
}if(radioButton2.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]{null,null,null,"TABLE"} );
dataGrid1.DataSource = dt;
}
if(radioButton3.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Procedures, null );dataGrid1.DataSource = dt;
}if(radioButton4.Checked)
{//Query for getting all primary keys
//OleDbSchemaGuid.Primary_Keys = con.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null );
// orginal OleDbSchemaGuid.dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null );
}
if(radioButton5.Checked)
{
dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Provider_Types, null );dataGrid1.DataSource = dt;
}
}
catch(Exception err)
{
MessageBox.Show("Fel:" + err.Message);
}
}
</code>
Om jag gör som föreslagits, då måste jag ju upprepa den nedre if-satsen igen, finns det inget sätt att komma förbi det??


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 155
27 952
271 704
6 085
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