2016-10-11 5 views
0

私は古い従来のASPプロジェクトを新しいホストに移行しなければならず、MySQLサーバーへの接続に問題があります。従来のASPでMySQLにレコードを追加する

私は今、エラーが

データソース名が見つからない古いホストとなし、デフォルトのドライバで使用されるスクリプトの下に添付しているが、私が持っているようだ掘りのビットの後

を指定しましたドライバを{MySQL ODBC 5.3 Unicode Driver}に変更するにはエラーが発生します。それはカーソル/ロック型を指しているようですが、私はすべてのオプションを使用して成功していません。

ODBCドライバは、要求されたプロパティをサポートしていません。

<% 
Dim Conn 
Dim Rs 
Dim sql 

Set Conn = Server.CreateObject("ADODB.Connection") 
Set Rs = Server.CreateObject("ADODB.Recordset") 

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=xxx; PORT=xxx; DATABASE=xxx; UID=xxx; PASSWORD=xxx; OPTION=3" 

sql= "SELECT * FROM table;" 

Rs.CursorType = 2 
Rs.LockType = 3 

Rs.Open sql, Conn  

Rs.AddNew 

Rs.Fields("database") = Request.Form("form") 

Rs.Update 
Rs.Close 
Set Rs = Nothing 
Set Conn = Nothing 
%> 
+1

なぜあなたは 'AddNew()'を使用していますか? SQLのINSERT文を実行するだけです.SQLのINSERT文は単純でエラーの発生が少なくなります。 – Lankymart

+0

元の接続文字列*(実際のサーバー、ユーザー情報を除いたもの)*変更前に 'データソース名が見つかりませんでした。デフォルトドライバが指定されていませんでした ' – Lankymart

+0

@Lankymartでも、SQLインジェクション攻撃から保護する簡単な方法です。 –

答えて

1

あなたは、レコードを挿入するには、この必要はありません。これは実際に書くのはもう少しですが、他の方法(例えばSQLインジェクション攻撃からの保護)のすべての利点を維持し、依存するべきではありません

Dim oCommand 
Const adInteger = 3 
Const adDate = 7 
Const adVarChar = 200 
sql = "Insert Into table (database) Values (?)" 
Set oCommand = Server.Createobject("ADODB.Command") 
Set oCommand.ActiveConnection = Conn 
oCommand.CommandText = sql 
oCommand.Parameters.Append(oCommand.CreateParameter("database", adVarChar, , 512, Request.Form("form"))) 
oCommand.Execute 

:代わりに、すべてのデータベースドライバでサポートされなければならないプレーンなSQLを使用特定のドライバについて

関連する問題