webForumDet fria alternativet

Databas koppling

ASP

17 svar · 834 visningar · startad av dreas

Medlem sedan jan. 2004140 inlägg
Frågan#1

Hej!
Snabb fråga, gärna med ett snabbt svar (lite tajt om tid).

Jag har gjort en s.k. fejkad databaskoppling med följande kodsnutt:

set conn=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("psarosflyfishing.mdb")
conn.open "driver={microsoft access driver (*.mdb)}; " & path,"name","name"

sql = "select * from Customers order by ID DESC"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

Denna har alltid fungerat tidigare, har dock aldrig prövat på nuvarande webbhotell förrän nu. Och jag får följande felmeddelande:

ADODB.Connection.1 error '800a0bb9'

The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.

/registerDone.asp, line 21

Line 21 är:
conn.open "driver={microsoft access driver (*.mdb)}; " & path,"name","name"

Tydligen så verkar den inte hitta databasen, eller har jag fel i detta? Kan/ska jag skriva en direktlänk till databasen istället för som nu??

Väldigt tacksam för svar

Mvh
/Andreas

Medlem sedan apr. 20003 174 inlägg
#2

Bättre variant..

[red]Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("psarosflyfishing.mdb")
		Set rs = Conn.Execute("SELECT * FROM Customers ORDER BY ID DESC")
	
			'// Gör nått..

			rs.Close
		Set rs = Nothing
	Conn.Close
Set Conn = Nothing[/red]
Medlem sedan apr. 20022 743 inlägg
#3

Palle, man behöver väll inte anävnda rs.Close om man inte har använt rs.Open?

Medlem sedan juni 200032 967 inlägg
#4

Recordsetet öppnas iom Set rs = Conn.Execute..., så då borde det stängas också.

Mvh

Medlem sedan apr. 20022 743 inlägg
#5

Tack för infon @!

Medlem sedan mars 20033 686 inlägg
#6

En fråga: Varför ska men ha en fejk connection för?

Medlem sedan apr. 20022 743 inlägg
#7

fejk connection?

Medlem sedan jan. 2004140 inlägg
#8

Tack för svaret Palle!
Men det du skrev var väl bara en annan, enklare och renare, kod som gör exakt samma sak.. eller tar jag fel?

Jag testade ivarje fall med din snutt, men får samma problem. Verkar som att sökvägen inte stämmer. Jag fick göra en "budget" lösning med att skriva in allt i en .txt fil istället och då verkar sökvägen inte vara något problem. Plus att det bevisar att det inte handlar om rättigheter för katalogen (skriv,läs osv).

Så.. nån/palle, nåt förslag på hur jag ska lösa detta? känns lite surt att inte kunna sparka igång databasen när man betalar för webbhotellet. Går det förresten för hotellet att låsa så att man inte kan göra en sådan databaskoppling - för att dem ska tjäna intäkter på en "riktig" koppling?

Mvh
/Andreas

Medlem sedan juni 200032 967 inlägg
#9

Hur ser din kod ut när du gör enligt Palles exempel? Du bör inte kunna få det felet med den koden. :)

Mvh

Medlem sedan jan. 2004140 inlägg
#10

Koden jag har skrivit är ju egentligen precis som palles:

      \<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("/u381/appsaros/database/customers.mdb")
Set rs = Conn.Execute("SELECT * FROM Customers ORDER BY ID DESC")

rs.addnew

rs("date") = date
rs("product") = request.form("rubrik")
rs("serial") = request.form("nyhet")
rs("name") = request.form("name")
rs("country") = request.form("country")
rs("address") = request.form("address")
rs("zip") = request.form("zip")
rs("mail") = request.form("mail")
rs("info") = request.form("info")

rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>

Felmedddelandet ser lite annorlunda ut nu:
ADODB.Connection.1 error '80004005'

SQLState: IM002
Native Error Code: 0
[INTERSOLV][ODBC lib] Data source name not found and no default driver specified

/registerDone_.asp, line 20

Line 20 är:
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("customers.mdb")

Problem med sökvägen?
Jag har testat lite olika varianter (dels den som fungerade för txt filen som jag nämnde ovan) utan resultat.

Trist med sånna här problem.. okej i själva koden, men fel i kopplingen *suck*
jaja :)

Tacksam för svar!

Mvh
/Andreas

Medlem sedan juni 200032 967 inlägg
#11

Det luktar som att nuvarande webhotell inte kör asp på IIS, kan det stämma?

Du får nog gå tillbaka till access-drivern du hade med i ditt första inlägg, det borde se ut så här:

set conn=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("psarosflyfishing.mdb")
conn.open "driver={microsoft access driver (*.mdb)}; " & path

Möjligen måste du också byta ut koden som lägger till data med .AddNew mot en INSERT-fråga i SQL.

mvh

Medlem sedan dec. 20003 887 inlägg
#12

Som felmeddelandet säger så är det ingen Accessdatabas utan en Interbase.

Interbase connection strings
ODBC, Intersolv

[u]Local[/u]
"Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=localhost;Database=localhost:C:\mydatabase.gdb;Uid=username;Pwd=password" 

[u]Remote[/u]
"Driver={INTERSOLV InterBase ODBC Driver (*.gdb)};Server=ComputerName;Database=ComputerName:C:\mydatabase.gdb;Uid=username;Pwd=password"

Källa: https://www.connectionstrings.com :)

Medlem sedan jan. 2004140 inlägg
#13

Oj
Då blev allt genast mer komplicerat.
Funkar inte vanligt ASP kodning då eller? Anders, hur skulle denna SELECT kod se ut?

Engine: Interbase? Har nog aldrig hört talas om det. Är ingen nybörjare, men är _definitivt_ inget proffs. Hur menar du att jag ska koda? Är det remote koden jag ska använda mig av för att få det att fungera på nätet? Antar att man byter ut alla 'ComputerName' och id/pass.. vilket id/pass är det jag ska använda? Det är väl inte till servern som jag använder för ftp?

Väldigt tacksam för fortsatt assistans

Mvh
/Andreas

Medlem sedan dec. 20003 887 inlägg
#14

[red.] Om webbhotellet kör något annat än IIS, så kan du inte använda dig av ASP. I det här fallet körs nog IIS med tanke på att du faktiskt får felmeddelanden. :)
Ibland tänker jag mig inte för när jag svarar ;)[/red.]

SELECT kod heter egentligen SQL-sats (konstig anmärkning från min sida :)) och hur den skrivs beror på vilket DBMS webbservern kör. Detta verkar vara Interbase, eftersom felkoden sade: [INTERSOLV][ODBC lib] ...

Det hela borde, tycker jag, ordna sig om du använder dig av local-kopplingssträngen (ick, nu ser jag varför jag inte gillar försvenskningar ;)), eftersom allting ligger "lokalt" på deras server. Eller?

Kolla runt lite mer på ditt webbhotell, så kan du nog få lite bättre svar på hur du ska gå tillväga.

Medlem sedan jan. 2004140 inlägg
#15

Hej igen.
Fick svar från webbhotellet när jag frågade om databas alternativ:

----------
We currently have drivers on each ASP Linux server for the following Databases:

  1. DB2 (not available on Linux, only on Solaris, AIX and HP-UX Operating Systems)
  2. Dbase (available)
  3. MySQL (available for Standard accounts, included with Commerce accounts and higher)
  4. Informix (not available, requires Informix software)
  5. MS SQL Server (not available, requires special software/server)
  6. PostgreSQL (not available, requires special software/server)
  7. Oracle (not available, requires special software/server)
  8. Sybase (not available, requires special software/server)
  9. Text file database (available)

Options 4-8 are only possible if you have the database and it's proper database server running elsewhere (i.e. SQL database w/ SQL7 Server).

MS Access: no drivers available (works only if database files reside on NT/2000 environment, elsewhere)

Dbase and Text File options are file-based type databases. The files need to be uploaded to the web server.

MySQL is a server-based type database. No need to upload files to web server since they will reside on the MySQL server.

NOTE: ASP communicates to Databases using DSN or DSN-less connections. DSN(Data Source Names) are just the specifications of any given database connection and include information such as drivers, location, server name, database name, username, password, etc. DSN should be specified in the configurations files of the server's registry (ODBC.INI). DSN-less need to be specified on the ASP pages or on the Global.asa file (located in the home directory of the ASP pages).

Since you are in a shared hosting environment, you won't have access to the server's registry or be able to modify the ODBC.INI file, hence, you need to use DSN-less connections.

Some known Database conversions/migrations are:

* Access to MySQL
* Access to Dbase
* Dbase to MySQL
* Excel to MySQL
* Excel to Dbase

----------

Så tydligen är det så att Access inte accepteras. Vad är det här Dbase dem pratar om? Någon som vet hur koden för databaskoppling ser ut för denna? Är det samma som Engine skrev?

Medlem sedan dec. 20003 887 inlägg
#16

Jag passar på att hänvisa till min källa igen :)

https://www.connectionstrings.com

Medlem sedan jan. 2004140 inlägg
#17

Tack Engine^ för hjälpen - den sidan var riktigt användbar!
Trots det så har jag inte lyckats få igång min databas :(
Får följande felmeddelande:

ADODB.Recordset.1 error '80004005'

SQLState: S0002
Native Error Code: 1509
[MERANT][ODBC dBase driver]File not found '/usr/local/casp/asp-apache-3000/Customers.DBF'.

/registerDone_.asp, line 24

Koden är:
<%
set conn=server.createobject("adodb.connection")
conn.open "Driver={Microsoft dBASE Driver (/u381/appsaros/database/customer.dbf)};DriverID=277;Dbq=customer;" & path,"name","name"

sql = "select * from Customers order by ID DESC"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

rs.addnew

rs("date") = date
rs("product") = request.form("rubrik")
rs("serial") = request.form("nyhet")
rs("name") = request.form("name")
rs("country") = request.form("country")
rs("address") = request.form("address")
rs("zip") = request.form("zip")
rs("mail") = request.form("mail")
rs("info") = request.form("info")

rs.update
rs.close
conn.close %>

Rad 24 är:
rs.Open sql, conn, 3, 3

Usch.. har snart inge hår kvar, efter allt slitande i det ;)
OTROLIGT tacksam för all hjälp.

Vet inte ifall problemet ligger i databasen?
Har gjort någon slags konvertering i Access från en .mdb till en sk. .dbf databas

Tack på förhand
/Andreas

Medlem sedan dec. 20003 887 inlägg
#18

Du har fel sökväg till databasen uppenbarligen.

Varför har du specificierat (/u381/appsaros/database/customer.dbf)? Räcker det inte med (*.dbf)

Jag rekommenderar också att du använder en OleDB-koppling, eftersom ODBC är förlegat.

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties=dBASE IV"
267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)