Avatar billede flashit Nybegynder
19. november 2003 - 17:13 Der er 16 kommentarer og
2 løsninger

sql database fejl

Hej E.

Jeg har nedenstående kode:
Men der kommer en fejl når jeg prøvet at åbne min connection.
(se her: http://www.dotdk.dk/exp/error.asp)

Er der en som kan hjælpe mig videre.

Jeg har prøvet med :
SqlConnection("server=(local);database=pubs;uid=;pwd=")
Da jeg burger windows logon til at logge på sql databasen.


Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Inherits System.Windows.Forms.Form


    Dim myConnection As SqlConnection = New _
    SqlConnection("server=(local);database=pubs;uid=jakob;pwd=jakob")
    Dim myDataAdapter As New SqlDataAdapter()
    Dim myDataSet As DataSet = New DataSet()


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'set the selectcommand properties...
        myDataAdapter.SelectCommand = New SqlCommand()
        myDataAdapter.SelectCommand.Connection = myConnection
        myDataAdapter.SelectCommand.CommandText = _
        "Select au_lname, au_fname, title, price" & _
        "From authors " & _
        "Join titleauthor on authors.au_id = titleauthor.au_id " & _
        "Join titles on titleauthor.title_id = titles.title_id " & _
        "Order By au_lname, au_fname"
        myDataAdapter.SelectCommand.CommandType = CommandType.Text

        'Open the connection
        myConnection.Open()
        'now execute the command
        myDataAdapter.SelectCommand.ExecuteNonQuery()
        'Fill the dataset object with data
        myDataAdapter.Fill(myDataSet, "Authors")
        'lukker igen
        myConnection.Close()
        grdAuthorTitles.DataSource = myDataSet
        grdAuthorTitles.DataMember = "authors"



    End Sub
End Class
Avatar billede squashguy Nybegynder
19. november 2003 - 17:17 #1
du mangler i hvert fald mellem før "From authors"
Avatar billede arne_v Ekspert
19. november 2003 - 17:53 #2
Prøv med:

"server=(local);database=pubs;Integrated Security=SSPI"

når du bruger NT security !
Avatar billede arne_v Ekspert
19. november 2003 - 17:54 #3
[squashguy har iøvrigt helt ret i at der mangler nogen mellemrum]
Avatar billede flashit Nybegynder
19. november 2003 - 19:34 #4
Ok, så er der hul igennem til databasen:
(SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"))
Som der er blevet skrevet er der problemer med sql'en, men jeg ved ikke hvad i mener, med at der mangler mellemrum?
Her er den nye fejl:
http://www.dotdk.dk/exp/error.asp

Kan i hjælpe mig lidt mere :-)
Avatar billede flashit Nybegynder
19. november 2003 - 19:35 #5
Dette er "min" sql(taget ud at "Beginning VB:NET 2nd Edition")
myDataAdapter.SelectCommand.CommandText = _
        "Select au_lname, au_fname, title, price" & _
        "From authors " & _
        "Join titleauthor on authors.au_id = titleauthor.au_id " & _
        "Join titles on titleauthor.title_id = titles.title_id " & _
        "Order By au_lname, au_fname"
Avatar billede arne_v Ekspert
19. november 2003 - 19:38 #6
SELECT er en query, så jeg tror ikke at ExecuteNonQuery
er den rigtige metode !
Avatar billede arne_v Ekspert
19. november 2003 - 19:39 #7
ExecuteReader er nok bedre.
Avatar billede flashit Nybegynder
19. november 2003 - 19:44 #8
myDataAdapter.SelectCommand.ExecuteReader()
giver samme fejl :-(
Avatar billede arne_v Ekspert
19. november 2003 - 19:51 #9
Hm. Jeg bruger normalt ikke SqlDataAdapter men kun SqlCommand.
Avatar billede flashit Nybegynder
19. november 2003 - 20:02 #10
Æv, jeg kan nemlig ikke komme viderer med kapitlet, inden dette problem er løst.
Avatar billede arne_v Ekspert
19. november 2003 - 20:22 #11
Jeg kiggede lidt i en bog.

Jeg tror at du muligvis bare skal slette linierne:

'now execute the command
myDataAdapter.SelectCommand.ExecuteNonQuery()

fordi fill vil faktisk udføre queryen.
Avatar billede flashit Nybegynder
19. november 2003 - 20:25 #12
Dette er hvad sqldatabasen skriver, når jeg laver det samme:

SELECT    authors.au_lname AS Expr1, authors.au_fname AS Expr2, titles.title AS Expr3, titles.price AS Expr4
FROM        authors INNER JOIN
                      titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN
                      titles ON titleauthor.title_id = titles.title_id
ORDER BY authors.au_lname, authors.au_fname

Kan det hjælpe?
Avatar billede flashit Nybegynder
19. november 2003 - 20:36 #13
Det giver samme fejl, når jeg ikke har nedenstående linie med:
myDataAdapter.SelectCommand.ExecuteNonQuery()
Det er da noget &%¤&#
Avatar billede m_skau Nybegynder
19. november 2003 - 20:52 #14
Der mangler stadig et mellemrum i din sql - efter price, så der skal stå:
     
"Select au_lname, au_fname, title, price " & _
"From authors " & _
"Join titleauthor on authors.au_id = titleauthor.au_id " & _
"Join titles on titleauthor.title_id = titles.title_id " & _
"Order By au_lname, au_fname"

Det skal der, fordi & _ betyder at strengen fortsætter på næste linie.  & _ er noget man bruger for læsbarhedens skyld, så én streng kan stilles op på flere kodelinier. Din SQL kommer til at se sådan her ud i den egentlige streng:

Select au_lname, au_fname, title, priceFrom authors Join titleauthor on [...]

Men der skal naturligvis stå:

Select au_lname, au_fname, title, price From authors Join titleauthor on [...]

To gode råd:
1) Skriv de reserverede SQL ord (SELECT, FROM osv) med stort - det er en konvention, der letter læsningen, fordi hurtigt kan overskue hvad der er feltnavn, og hvad der er kommandoer.
2) Når SQL giver problemer, så skriv SQL strengen ud med en response.write, så du kan se præcis hvad du forsøger at udføre. F.eks. sådan her:

dim MinSQL as string
MinSQL = "SELECT au_lname FROM Authors"
myDataAdapter.SelectCommand.CommandText = MinSQL
response.write(MinSQL)
'Kommenter udførelsen af SQL'en ud, så du kan se ovenstående, og ikke fejlsiden
'Myconnection.open
'myDataAdapter.SelectCommand.ExecuteReader()
Avatar billede m_skau Nybegynder
19. november 2003 - 21:03 #15
Undskyld jeg skrev det som om det var asp.net, det er det jo ikke, så i stedet for response.write så skriv f.eks. ud til debug vinduet, med debug.print:

dim MinSQL as string
MinSQL = "SELECT au_lname FROM Authors"
myDataAdapter.SelectCommand.CommandText = MinSQL
debug.print MinSQL
Avatar billede flashit Nybegynder
19. november 2003 - 21:45 #16
DOOOOOOHHHHHHHHHHH.
Nu kan jeg se det.
Det var "bare" det mellemrum :-(
Giver I ikke alle et svar, da i alle her hjulpet MEGET.
Mange TAK
Avatar billede arne_v Ekspert
19. november 2003 - 21:51 #17
svar
Avatar billede flashit Nybegynder
20. november 2003 - 22:31 #18
Så bliver der ikke ventet mere :-)
Endnu engang TAK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester