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


skapa databaslager

Postades av 2006-04-15 12:22:57 - Robin Bamford, i forum c# (c-sharp), Tråden har 10 Kommentarer och lästs av 967 personer

Hejsan jag har följt artiklen som pelle har skrivit om att skapa ett databaslager i en dll fil. Det går alldeles utmärkt att skapa en i VB men jag vill jobba i C# helst. Och jag får massa felmeddelande när jag kompilerar den kod pelle har skrivit. jag jobbar i visual.studio 2005.

här är min kod

using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;


public class SQLFunctions
{
static string GetConnectionString()
{
if (InStr(HttpContext.Current.Request.Url.ToString.ToLower, "localhost") > 0)
{
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal");
}
else
{
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionString");
}
}

static DataSet ReturnDataset(string query)
{
SqlConnection conn = new SqlConnection(GetConnectionString);
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet dataset = new DataSet();
try
{
adapter.SelectCommand = new SqlCommand(query, conn);
adapter.Fill(dataset);
}
catch (SystemException ex)
{
throw new ApplicationException("SQL: Kan inte köra frågan:" + Err.Description + query);
}
return dataset;
}

public static SqlDataReader ReturnDataReader(string sqlquery)
{
SqlConnection myConnection = new SqlConnection(GetConnectionString);
SqlCommand myCommand = new SqlCommand(sqlquery, myConnection);
myCommand.CommandType = CommandType.Text;
try
{
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
return result;
}
catch (DataException ex)
{
throw new SystemException("Fel vid anrop av sql-fråga: " + sqlquery + "-" + Err.Description);
}
myCommand = null;
myConnection = null;
}

static void ExecuteQuery(string sqlquery)
{
string connectionstring = GetConnectionString();
SqlConnection Con = new SqlConnection(connectionstring);
SqlCommand cmd;
Con.Open();
cmd = new SqlCommand(sqlquery, Con);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new SystemException("Fel vid anrop av sql-fråga: " + sqlquery + "-" + Err.Description);
}
Con.Close();
}
}

Här är felmeddelanden

Error 1 The name 'InStr' does not exist in the current contextError
2 'object.ToString()' is a 'method', which is not valid in the given context
Error 4 'System.Configuration.ConfigurationSettings.AppSettings' is a 'property' but is used like a 'method'
Error 6 'System.Configuration.ConfigurationSettings.AppSettings' is a 'property' but is used like a 'method'
Error 7 The best overloaded method match for 'System.Data.SqlClient.SqlConnection.SqlConnection(string)' has some invalid arguments
Error 8 Argument '1': cannot convert from 'method group' to 'string'
Error 9 The type or namespace name 'SystemException' could not be found (are you missing a using directive or an assembly reference?)
Error 10 The type or namespace name 'ApplicationException' could not be found (are you missing a using directive or an assembly reference?)
Error 11 The name 'Err' does not exist in the current context
Error 12 The best overloaded method match for 'System.Data.SqlClient.SqlConnection.SqlConnection(string)' has some invalid arguments
Error 13 Argument '1': cannot convert from 'method group' to 'string' Error 14 The type or namespace name 'SystemException' could not be found (are you missing a using directive or an assembly reference?)
Error 15 The name 'Err' does not exist in the current context
Error 16 The type or namespace name 'Exception' could not be found (are you missing a using directive or an assembly reference?)
Error 17 The type or namespace name 'SystemException' could not be found (are you missing a using directive or an assembly reference?)
Error 18 The name 'Err' does not exist in the current context


Svara

Sv: skapa databaslager

Postades av 2006-04-15 14:03:33 - Johan Djupmarker

Koden innehåller massor med fel... Ser ut att vara VB.NET-kod med lite klamrar och ;...? Ska försöka mig på att rätta första metoden, hoppas att jag inte har missat någt.

    static string GetConnectionString()
    {
        if (HttpContext.Current.Request.Url.ToString().ToLower().IndexOf("localhost") > 0)
        {
            return ConfigurationSettings.AppSettings["ConnectionStringLocal"];
        }
        else
        {
            return ConfigurationSettings.AppSettings["ConnectionString"];
        }
    }


/Johan


Svara

Sv: skapa databaslager

Postades av 2006-04-15 18:36:14 - Erik Pettersson

Har en gammalt lager till mysql, byt ut alla odbc mot sql så funka nog koden nedan om du inte orkar fixa felen...
<code>
public class MysqlDataAccess : IDataAccess
{
// Definitions
string _strConnection = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=****;" +
"UID=****;" +
"PASSWORD=****;" +
"OPTION=3";

private OdbcConnection _objConn;
private OdbcDataReader _objDataReader;
private OdbcCommand _cmdSql;
private ArrayList _parameterCollection;

public MysqlDataAccess()
{
_objConn = new OdbcConnection(_strConnection);
_cmdSql = new OdbcCommand();
_parameterCollection = new ArrayList();
}

private void CreateCommand(string sqlStatement)
{
_cmdSql.CommandText = sqlStatement;
_cmdSql.Connection = _objConn;
foreach (OdbcParameter prm in _parameterCollection)
{
_cmdSql.Parameters.Add(prm);
}
}

public void CreateParameter(string parameterName, DbType dataType, object parameterValue)
{
OdbcParameter tmp = new OdbcParameter();
tmp.Value = parameterValue;
_parameterCollection.Add(tmp);
//_parameterCollection.Add(new OdbcParameter().Value = parameterValue);

}

public void ClearParameters()
{
_parameterCollection.Clear();
_cmdSql.Parameters.Clear();
}

public DataSet GetDataSet()
{
throw new NotImplementedException();
}

public DataTable GetDataTable()
{
throw new NotImplementedException();
}

public IDataReader GetDataReader(string sqlStatement)
{
try
{
_objConn.Open();
CreateCommand(sqlStatement);
_objDataReader = _cmdSql.ExecuteReader(CommandBehavior.CloseConnection);

return _objDataReader;
}
catch (Exception)
{
throw new Exception("Opps!");
}
finally
{

}
}

public void RunNonQuery(string sqlStatement)
{
RunNonQuery(sqlStatement, false);
}

public object GetScalar(string sqlStatement)
{
try
{
if (_objConn.State == ConnectionState.Closed)
{
_objConn.Open();
}
CreateCommand(sqlStatement);
return _cmdSql.ExecuteScalar();
}
catch (Exception)
{
throw new Exception("Opps!");

}
finally
{
_objConn.Close();
}
}

public void RunNonQuery(string sqlStatement, bool leaveConnectionOpen)
{
try
{
if (_objConn.State == ConnectionState.Closed)
{
_objConn.Open();
}
CreateCommand(sqlStatement);
_cmdSql.ExecuteNonQuery();
}
catch (Exception)
{
throw new Exception("Opps!");
}
finally
{
if (!leaveConnectionOpen)
{
_objConn.Close();
}
}
}



}

}

</code>


Svara

Sv: skapa databaslager

Postades av 2006-04-15 21:53:16 - Per Hultqvist

Detta borde fungera. Du måste dock lägga till referenserna System.Web och System.Configuration för att koden skall fungera i C# och Visual Studio 2005.

using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;


public class SQLFunctions
{
    static string GetConnectionString()
    {
        if (System.Web.HttpContext.Current.Request.Url.ToString().ToLower().IndexOf("localhost") > 0)
            return ConfigurationManager.AppSettings["ConnectionStringLocal"].ToString();
        else
            return ConfigurationManager.AppSettings["ConnectionString"].ToString();
    }

    static DataSet ReturnDataset(string query)
    {
        SqlConnection conn = new SqlConnection(GetConnectionString());
        SqlDataAdapter adapter = new SqlDataAdapter();
        DataSet dataset = new DataSet();
        try
        {
            adapter.SelectCommand = new SqlCommand(query, conn);
            adapter.Fill(dataset);
        }
        catch (System.SystemException ex)
        {
            throw new System.ApplicationException("SQL: Kan inte köra frågan:" + query + "-" + ex.ToString());
        }
        return dataset;
    }

    public static SqlDataReader ReturnDataReader(string sqlquery)
    {
        SqlConnection myConnection = new SqlConnection(GetConnectionString());
        SqlCommand myCommand = new SqlCommand(sqlquery, myConnection);
        myCommand.CommandType = CommandType.Text;
        try
        {
            myConnection.Open();
            SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
            return result;
        }
        catch (DataException ex)
        {
            throw new System.SystemException("Fel vid anrop av sql-fråga: " + sqlquery + "-" + ex.ToString());
        }
        finally
        {
            myCommand = null;
            myConnection = null;
        }
    }

    static void ExecuteQuery(string sqlquery)
    {
        string connectionstring = GetConnectionString();
        SqlConnection Con = new SqlConnection(connectionstring);
        SqlCommand cmd;
        Con.Open();
        cmd = new SqlCommand(sqlquery, Con);
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (System.Exception ex)
        {
            throw new System.SystemException("Fel vid anrop av sql-fråga: " + sqlquery + "-" +  ex.ToString());
        }
        Con.Close();
    }
}


Svara

Sv: skapa databaslager

Postades av 2006-04-16 09:02:24 - Robin Bamford

hejsan ja nu fungerar det, tror jag ;)

Men när ja senare ska kalla på datafuncitons från min asp.net sida så kan den inte hitta den. Jag har addat referencen till dll filen som jag skapat men det fungerar fortfarande inte. Självklart så fungerar det om jag kör i med VB ;).

Kod

private void Page_Load(object sender, System.EventArgs e)
{

System.Data.SqlClient.SqlDataReader dr = DataFunctions.SQLFunctions.ReturnDataReader("select * from users limit 5");
dr.Close();

}



Felemedelande

Error 2 The name 'DataFunctions' does not exist in the current context


Svara

Sv:skapa databaslager

Postades av 2006-04-16 14:21:05 - Per Hultqvist

Antingen behöver du ta bort DataFunctions och bara skriva :

      System.Data.SqlClient.SqlDataReader dr = SQLFunctions.ReturnDataReader("select * from users limit 5");

eller får du lägga klassen i ett namespace som heter DataFunctions :
namespace DataFunctions
{
    // Lägg klassen här...
}

Sedan tror jag inte "select * from users limit 5" är giltigt syntax på en SQL-server. Skriv i stället :
select top 5 * from users


Svara

Sv: skapa databaslager

Postades av 2006-04-16 16:32:03 - Robin Bamford

Hej,

Japp var tvungen att ta bort DataFunctions. SQL strängen ser ut som den gör för att det är en mySQL databas.

Pelle borde se över sin C# kod i sin artikel om databaslager. Annars är den kanon ;)

Tack för hjälpen

mvh

Robin


Svara

Sv:skapa databaslager

Postades av 2006-04-16 17:50:10 - Per Hultqvist

Hmm jag trodde funktionerna under System.Data.SqlClient bara fungerade mot Microsoft SQL-server, men så är det tydligen inte?


Svara

Sv: skapa databaslager

Postades av 2006-04-16 19:02:55 - Robin Bamford

Nej det fungerar nog inte, jag använde mig av MySql.Data.MySqlClient.MySqlDataReader

mvh

Robin


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 159
27 952
271 704
932
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