webForumDet fria alternativet

Dataconnection i C#

.NET

18 svar · 483 visningar · startad av maqe

Medlem sedan dec. 2003824 inlägg
Frågan#1

Kan någon förklara vad som är fel här ... har kört denna kod fast i vb.net och då fungerade det klockrent men inte i C#... Jag har hittat ett fel och det var att man skulle använda [] istället för () efter configurationsettings.appsettings.

felet jag får är här ...

public SqlConnection objConnection = CreateConnection(myConnString);

och felmeddelandena ser ut såhär ...

A field initializer cannot reference the nonstatic field, method, or property 'community.MyDataAccessCls.myConnString'

och

No overload for method 'CreateConnection' takes '1' arguments

Medlem sedan maj 20012 812 inlägg
#2

No overload for method 'CreateConnection' takes '1' arguments

Din funktion CreateConnection tillåter dig inte att endast skicka in 1 parameter av typen sträng till den. Antingen så vill den inte har några parameter alls, eller så vill den ha fler eller endast 1 av annan typ.

field initializer cannot reference the nonstatic field, method, or property 'community.MyDataAccessCls.myConnString

Svårt att säga då jag inte kan se koden i CreateConnection men jag gissar på att i classen MyDataAccessCls så finns det en variabler som heter myConnString och denna försöker du nå utan att ha instansierat ett nytt objekt av klassen MyDataAccessCls.

- Magnus

Medlem sedan dec. 2003824 inlägg
#3

Såhär ser delar av min klass ut ...

//## Definera anslutningssträngen till database #
public string myConnString = ConfigurationSettings.AppSettings["conn"];
public SqlConnection objConnection = CreateConnection(myConnString);

  //## Skapa anslutningen #
  private SqlConnection CreateConnection()
  {
  	SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
  	return myConnection;
  }

Har provat att inte skicka med nått argument till CreateConnection() utan framgång

Medlem sedan maj 20012 812 inlägg
#4

Om din CreateConnection() ser ut som den gör, skall du inte skicka med något till den. Den tar ju inte emot några parameters och det skall alltås inte sändas några till den.

Vad får du för fel, när du inte skickar med något till CreateConnection().

- Magnus

Medlem sedan aug. 20003 575 inlägg
#5
//## Definera anslutningssträngen till database #
public string myConnString = ConfigurationSettings.AppSettings["conn"];
public SqlConnection objConnection = CreateConnection(myConnString);

//## Skapa anslutningen #
private SqlConnection CreateConnection([b]myConnString[/b])
{
SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
return myConnection;
}

Så kanske

Medlem sedan dec. 2003824 inlägg
#6

Gladh skrev:

Om din CreateConnection() ser ut som den gör, skall du inte skicka med något till den. Den tar ju inte emot några parameters och det skall alltås inte sändas några till den.

Vad får du för fel, när du inte skickar med något till CreateConnection().

- Magnus

Om jag inte skickar med nått argument till min CreateConnection får jag detta fel

A field initializer cannot reference the nonstatic field, method, or property 'community.MyDataAccessCls.CreateConnection()'

Medlem sedan dec. 2003824 inlägg
#7

Nickemannen skrev:

//## Definera anslutningssträngen till database #
public string myConnString = ConfigurationSettings.AppSettings["conn"];
public SqlConnection objConnection = CreateConnection(myConnString);


//## Skapa anslutningen #
private SqlConnection CreateConnection([b]myConnString[/b])
{
SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
return myConnection;
}

Så kanske

Det fungerade inte heller tyvärr

Medlem sedan mars 20023 561 inlägg
#8

maqe skrev:

Nickemannen skrev:

Så kanske

Det fungerade inte heller tyvärr

Samma fel?

Medlem sedan dec. 2003824 inlägg
#9

Josef skrev:

maqe skrev:

Nickemannen skrev:

Så kanske

Det fungerade inte heller tyvärr

Samma fel?

Detta fel får jag när jag gör så

//================================================
//## Definiera Anslutningssträng till Databasen #
public string myConnString = ConfigurationSettings.AppSettings["connString"];
public SqlConnection objConnection = CreateConnection(myConnString);
//================================================
//## Skapa Anslutning #
private SqlConnection CreateConnection(myConnString)
{
SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
return myConnection;
}

Felmeddelande:

Identifier expected

Medlem sedan sep. 20011 914 inlägg
#10
//## Skapa Anslutning #
private SqlConnection CreateConnection([b]string[/b] myConnString) 
{
   SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
   return myConnection;
}
Medlem sedan dec. 2003824 inlägg
#11

Har testat det med eftersom det är det korrekta sättet :)
dom här felen får jag då...

field initializer cannot reference the nonstatic field, method, or property 'community.MyDataAccessCls.CreateConnection(string)'

A field initializer cannot reference the nonstatic field, method, or property 'community.MyDataAccessCls.myConnString'

Medlem sedan sep. 20011 914 inlägg
#12

Hur ser classen ut?
Och hur ser koden ut som du anropar methoden ifrån?

Medlem sedan apr. 2004778 inlägg
#13

Har du verkligen connString på rätt sätt i din web.config?

Medlem sedan sep. 20011 914 inlägg
#14
//Alt 1
public class MyDataAccessCls
{
   private string _myConnString;
   private SqlConnection _objConnection;

   public MyDataAccessCls()
   {
      this._myConnString = ConfigurationSettings.AppSettings["connString"].ToString().Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath);
      this._objConnection = CreateConnection(myConnString);
   }

   //## Skapa Anslutning #
   private SqlConnection CreateConnection(string myConnString) 
   {
      return new SqlConnection(myConnString);
   }
}

//Alt 2
public sealed class MyDataAccessCls
{
   private static string _myConnString;
   private static SqlConnection _objConnection;

   static MyDataAccessCls() 
   {
      this._myConnString = ConfigurationSettings.AppSettings["connString"].ToString().Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath);
      this._objConnection = CreateConnection(myConnString);
   }

   //## Skapa Anslutning #
   private SqlConnection CreateConnection(string myConnString) 
   {
      return new SqlConnection(myConnString);
   }
}
Medlem sedan dec. 2003824 inlägg
#15

PDahlen skrev:

Har du verkligen connString på rätt sätt i din web.config?

Japps jag har den efter configuration men före system.web i min web.config ...

såhär ser det ut ...

<appSettings>
<add key="connString" value="server=localhost;uid=användare;password=lösenord;database=databas"/>
</appSettings>

Medlem sedan apr. 2004778 inlägg
#16

Du har väl appSettings innanför Configuration-taggarna? Det är det viktiga. Sedan om appSettings eller system.web kommer först spelar ingen roll.

<configuration>
    
  <system.web>
    bla bla... system.web kod
  </system.web>

  <appSettings>
    <add key="connString" value=" server=localhost;uid=användare;password=lösenord;database=da
tabas"/>
  </appSettings>

</configuration>
Medlem sedan dec. 2003824 inlägg
#17

PDahlen skrev:

Du har väl appSettings innanför Configuration-taggarna? Det är det viktiga. Sedan om appSettings eller system.web kommer först spelar ingen roll.

<configuration>
    
  <system.web>
    bla bla... system.web kod
  </system.web>

  <appSettings>
    <add key="connString" value=" server=localhost;uid=användare;password=lösenord;database=da
tabas"/>
  </appSettings>

</configuration>

Japps den är innanför configuration taggarna ...

Medlem sedan juli 20022 537 inlägg
#18

Ska du verkligen ha ett sådant radbyte?

Testa detta:

<configuration>
    
  <system.web>
    bla bla... system.web kod
  </system.web>

  <appSettings>
    <add key="connString" value="  server=localhost;uid=användare;password=lösenord;database=databas"/>
  </appSettings>

</configuration>

/r
Såg inte att det blev ett radbyte automatiskt när man postade.. sorry.

Medlem sedan dec. 2003824 inlägg
#19

Här är lösningen ...

//================================================
//## Definiera Anslutningssträng till Databasen #

  public static string myConnString = ConfigurationSettings.AppSettings\["connString"\];
  public static SqlConnection objConnection = CreateConnection();

  //================================================
  //## Skapa Anslutning #
  private static SqlConnection CreateConnection() 
  {
  	SqlConnection myConnection = new SqlConnection(myConnString.Replace("%APPFOLDER%", HttpRuntime.AppDomainAppPath));
  	return myConnection;
  }
263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)