17. marts 2006 - 17:01Der er
13 kommentarer og 2 løsninger
FRA VB til .Net-application
Hvordan oversætter jeg
Sub SaveFile(ByVal filepath As String, ByVal str As String) Dim objFSO As Object Dim objNewFile As Object objFSO = CreateObject("Scripting.FileSystemObject") objNewFile = objFSO.CreateTextFile(filepath) objNewFile.WriteLine(str) objNewFile.Close() End Sub 'SaveFile
Den skriver at "Option Strict On disallows late binding."
Jeg kan heller ikke få Replace til at virke:
Replace(aktueltfeltindhold, "'", "''")
Den skriver "Overload resolution failed because no accessible 'Replace' accepts this number of arguments."
Min procedure skal jeg ikke bruge til fileupload. Jeg skal bruge den til at lave en fil indeholdende et databasedump som jeg selv laver ved at bruge indbyggede stored procedures.
>websam hvad mener du med Parameter i min sqlsætning ? Kan du give et eksempel
Ja det kan jeg da, eksemplet er til version 1.1 af platformen :
Dim objDb As DbClass = New DbClass Dim objComm = New SqlCommand objComm.Parameters.Add("@Fornavn", SqlDbType.NVarChar) objComm.Parameters.Add("@Efternavn", SqlDbType.NVarChar) objComm.Parameters("@Fornavn").Value = Din variabel objComm.Parameters("@Efternavn").Value = Din variabel objComm.Connection = objDb.SqlConnect Try objComm.CommandText = "Insert Into tbl_navne (Fornavn, Efternavn) Values (@Fornavn, @Efternavn)" objComm.ExecuteNonQuery() Catch ex As Exception Return ex.Message Finally objDb.SqlClose() End Try
Tag dig ikke af min connection, det har du sikkert styr på, men brugen af parametre kandu lige så godt gøre til vane med det samme i alle dine database behandlings metoder.
Har jeg forstået det rigtigt hvis jeg tror at fidusen ved dine parametre er at man så ikke behøver at lave replace(feltindhold,"'","''") for at undgå sql-injektions og ikke behøver replace(kommatal,",",".") i felter af typen "flydende tal" og måske også undgår diverse krumspring vedrørende dato'er ?
Altså at parametrene med angivne typer sørger for at maskinen gør "det rigtige" i sql-sætningerne ?
Sub SaveFile(ByVal filepath As String, ByVal str As String) Dim oFile As System.IO.File Dim oWrite As System.IO.StreamWriter oWrite = oFile.CreateText(filepath) oWrite.WriteLine(str) oWrite.Close() End Sub 'SaveFile
1. Ja parameterne sørger for at fjerne (')er så du behøver ikke at lave den replace på tekst der skal lagres.
2. Hvad angår kommatal bliver jeg dig svar skyldig :o(
3. Datoer plejer jeg at lave i databasen med getdate()[MsSql] el. now()[Access], men hvis du vil smide en dato med i databasen igennem en parameter, så er det bare sådan her :
objComm.Parameters.Add("@Dato", SqlDbType.DateTime) objComm.Parameters("@Dato").Value = Now() el. en variabel med dato
Og så kom du mig i forkøbet med metoden, men jeg ville have foreslået :
Imports System.IO
Sub SaveFile(ByVal filepath As String, ByVal str As String) Dim oFile As File Dim oWrite As StreamWriter oWrite = oFile.CreateText(filepath) oWrite.WriteLine(str) oWrite.Close() End Sub
Ved at lave imports behøver du ikke at skal skrive System.IO ved alle instantieringer (eller hvordan det lige staves *GGG*)
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.