C# ASP.NET und SQL - Server Probleme

Nero1

Captain
Registriert
Nov. 2009
Beiträge
3.732
Hi,

möchte ein Ticketsystem auf die Beine stellen (Studium), was später ins aktive System integriert werden soll. Dazu hab ich erstmal zum Testen ne kleine Dummy-Database auf nem SQL - Server aufgestellt.

Defaut.aspx.cs:
Code:
public DataTable GetDataTable(string query)
    {
        String connectionString = ConfigurationManager.ConnectionStrings["SQLDbConnection"].ConnectionString;
        SqlConnection connection=new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(query, connection);

        DataTable myDataTable = new DataTable();

        connection.Open();
        try
        {
            adapter.Fill(myDataTable);
        }
        finally
        {
            connection.Close();
        }

        return myDataTable;
    }

    protected void RadGrid_Tickets_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        RadGrid_Tickets.DataSource = GetDataTable("SELECT Ticketnummer, Name, Email, Telefon, Produkt, Beschreibung FROM Telerik_Tickets");
    }

Default.aspx:
Code:
<asp:SqlDataSource ID="Telerik_Tickets" runat="server" ConnectionString="SQLDbConnection"
DeleteCommand="DELETE FROM [Telerik_Tickets] WHERE [Ticketnummer]=@Ticketnummer"
InsertCommand="INSERT INTO [Telerik_Tickets] ([Ticketnummer],[Name],[Email],[Telefon],
                                                [Produkt],[Beschreibung]) VALUES (@Ticketnummer, @Name,@Email,@Telefon,@Produkt,@Beschreibung)"
SelectCommand="SELECT * FROM [Telerik_Tickets]"
UpdateCommand="UPDATE [Telerik_Tickets] SET [Name]=@Name,[Email]=@Email,[Telefon]=@Telefon,
                                                [Produkt]=@Produkt,[Beschreibung]=@Beschreibung WHERE [Ticketnummer]=@Ticketnummer">

und der Connectionstring aus der web.config:
Code:
<connectionStrings>
      <add name="SQLDbConnection" connectionString="Server=[servername]; Database=[datenbank];Integrated Security=SSPI"
            providerName="System.Data.SqlClient" />
  </connectionStrings>

Nun bekomme ich beim Laden der Website aber die Fehlermeldung:

"Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index '0' beginnt."

Wo hab ich was falsch gemacht? :(

LG
 
Zuletzt bearbeitet:
Was hat das COLOR im connectionString zu suchen?
 
Ja sorry, passiert wenn man nich nochma drüber schaut :D

Sollte bloß ne farbliche Hervorhebung werden, aber scheint wohl net zu gehen :p So isser richtig jetz ;)
Trotzdem eine Idee? Hab nochmal mit nem Kollegen gesprochen, werde morgen mal Schritt für Schritt die einzelnen Dinge durchgehen...Mal sehen ob ich was finde
 
Zu welcher SQL-Server-Version willst du dich verbinden?
Probier es mal mit dieser Syntax:
Code:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

Ansonsten musst du sie Stelle suchen, an der die Exception geworfen wird.
 
Weiß ich grad gar net, müsst ich nachgucken....
Ich nehm an das is dann der Conn.-string? werd ich morgen mal probieren, danke ;)

Was das suchen anbelangt...da werd ich wohl mit meinem derzeitigen Wissen net drumrum kommen das einzeln aufzulösen und stückweise zu testen^^ Aber hoffe mal das funktioniert...werde im Verlauf des morigigen Tages mal posten obs geklappt hat!

Lg
 
Ja, ich meine den ConnectionString.
Ich nehme an, du arbeitest mit VisualStudio? Dann einfach ein paar Breakpoints setzen, mit dem Debugger durchsteppen und gucken wo's knallt.
 
Schön wärs wenn die Welt so einfach wär :D da ich fast ausschließlich bis jetzt in der .aspx gearbeitet hab bringt mir der Debugger leider gar nichts weil ich in der nicht debuggen kann sondern nur in der C# - Code .aspx.cs :)

Und da kam der Fehler schon nach dem Page_Load Event. Ich hab jetz zumindest erstmal die ganzen Commands aus der Datasource genommen, da kommt zumindest die Seite ohne Fehler.
Aber mal ne andere Frage...muss ich die angezeigten Spalten sowohl in der .aspx als auch der ~.cs festlegen? Sprich ich deklariere/definiere die in der .aspx und schreib dann nochmal in die ~.cs welche angezeigt wird, was reinkommt laut Datenbank etc?

EDIT:

SQL Server ist übrigens der 2008er.

Ich hab jetz das Gridview mal einzeln als Testprojekt gemacht und es klappt einwandfrei...keine Ahnung wo d noch der Fehler liegt aber werde mal ein wenig probieren. Werde mich dann später wohl nochmal melden, wenn du noch Fragen oder Interessen hast nur raus damit ;)
 
Zuletzt bearbeitet:
Die Spalten musst du einmal beim Abfragen von der Datenbank angeben (oder *) und dann nochmal bei der Ausgabe an eine Tabelle, wobei du beim der SQL-Abfrage natürlich mehr auswählen kannst, als du im Endeffekt in der Tabelle darstellt.

Schau' dir mal das Tutorial auf MSDN an: http://msdn.microsoft.com/en-us/library/aa581776.aspx
Wenn du das Verstanden hast, und auch die nachfolgenden Tutorials liest, sollte das mit den Spalten kein Problem mehr sein. Mit dem TableAdapter hast du zudem dein ganzes SQL in einer Klasse und nicht (mehrfach) über das ganze Programm verstreut.
 
Also ich habe es, einzeln auf das Grid bezogen, so gemacht:

Code:
public DataTable GetDataTable(string query)
    {
        string connectionString=ConfigurationManager.ConnectionStrings["SQLDbConnection"].ToString();
        SqlConnection connection =new SqlConnection(connectionString);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(query, connection);

        DataTable myDataTable = new DataTable();

        connection.Open();
        try
        {
            adapter.Fill(myDataTable);
        }
        finally
        {
            connection.Close();
        }

        return myDataTable;
    }

    protected void RadGrid1_NeedDatasource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        RadGrid1.DataSource = GetDataTable("SELECT * FROM Telerik_Tickets");
    }

mit

Code:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting>
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
	</telerik:RadAjaxManager>
	<div>
        <telerik:RadGrid ID="RadGrid1" runat="server" Width="100%" AllowPaging="true" PageSize="5" AllowSorting="true"
                            OnNeedDataSource="RadGrid1_NeedDatasource" GridLines="None">
            <MasterTableView Width="100%">
            </MasterTableView>
            <PagerStyle Mode="NextPrevAndNumeric" />
            <FilterMenu EnableTheming="true">
                <CollapseAnimation Duration="200" Type="OutQuint" />
            </FilterMenu>
        </telerik:RadGrid>
	</div>
	</form>

in der Default.aspx sowie

Code:
<connectionStrings>
    <add name="SQLDbConnection" connectionString="Data Source=[Geheim];Initial Catalog=[Geheim];Integrated Security=SSPI;"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

So klappt das alles und ich bekomm das Grid sehr schön angezeigt.

Danke die erstmal für den Link, werde ich mir im Verlauf der nächsten Stunden mal zu Gemüte führen ;)
 
---Nicht mehr notwendig---
 
Zuletzt bearbeitet: (Hat sich erledigt)
Falls du noch interesse am anderen Datenbanken hast, kannst du ja den Tool benutzen. Der kann mehrere Datenbanken gleichzeitig abhacken.... Kannst auch SQL Query ohne großen Programmieraufwand ausführen. Dieser Tool setzt voraus, dass du dich mit SqlClient und anderen Namespaces auskennst oder diese Informationen nicht verinnerlichen willst.
 
Zurück
Oben