2014-04-17 2 views
1

일부 Classic ASP 페이지를 .NET으로 마이그레이션해야합니다. ASP 응용 프로그램에서 사용 된 ADODB 연결에 문제가 있습니다. 여기에 내가 DB에 연결하기위한 모든 페이지에이 코드를 사용하려면ASP에서 ASPX 로의 ADODB 연결 이동

<% 
Option Explicit 

' Declare variables... 
Dim cnn ' ADO connection 
Dim rst ' ADO recordset 
Dim strTitle 'Title for each page 

Sub OpenDatabase() 
    ' Create an ADO Connection. 
    Set cnn = Server.CreateObject("ADODB.Connection") 

    ' We're using SQL Server connection string 
    cnn.Open Session("SQLConnectString") 
    cnn.CommandTimeout = 0 
    Server.ScriptTimeout = 3000 

    ' Create an ADO Recordset object 
    Set rst = Server.CreateObject("ADODB.Recordset") 
End Sub 

Sub RunSQL(strSQL)   
    'Open a recordset from the strSQL. 
    rst.Open strSQL, cnn 

End Sub 

Sub CloseDatabase() 
    rst.Close 
    Set rst = Nothing 
    cnn.Close 
    Set cnn = Nothing 
End Sub 
%> 

db.asp의 코드입니다. 지금 내가지고있어 오류 내 코드에서 Option Explicit를 제거하고 나는 새로운 aspx 페이지에이 코드를 복사 한 <%@ Page Language="VB" %>로 헤더를 추가해야 할 것을 알고

1) VS Sub OpenDatabase() 전에 End Sub을 넣어달라고하지만, 닫을 필요가있는 Open Sub이 없습니다.

2) VS이 변수 cnn, rst, strTitle

3) 지금은의 Web.config에서 ConnectionString을 저장, 그래서 나는 다음과 같은 코드로 open를 교체 한 표시되지 않습니다 :

cnn.Open(System.Configuration.ConfigurationManager.ConnectionStrings("SQLConnectString").ConnectionString) 

수정하려면 어떻게해야합니까? 모든 조언 =) 감사합니다

답변

3

DotNet에서 ADODB를 사용하지 마십시오. 기술적으로는 할 수 있지만 할 수있는 방법은 아닙니다.

ADO.Net, IDataReaders, DataSets (느슨한 또는 강력한 형식, 나는 강하게 입력하는 것이 좋습니다)를 사용합니다.

ASP.NET은 ASP가 아닙니다.

기분 나빠하지 마라. 나는 너와 똑같은 것을 시도했다. 누군가 나에게 다르게 말할 때까지.

다음은 튜토리얼입니다 ... 현재 올바른 위치에있을 것입니다. NET에서

http://www.aspsnippets.com/Articles/Difference-between-ExecuteReader-ExecuteScalar-and-ExecuteNonQuery.aspx

+0

코드 예제를 제공 할 수 있습니까? 지금까지와 동일한 기능을 수행 할 수 있습니까? 감사. 연결 열기, SQL 실행, 연결 닫기 – Bryuk

+0

귀하의 strSql이 무엇인지 잘 모릅니다. SELECT'ing입니까?UPDATE'ing 또는 INSERT'ing? 삭제 하시겠습니까? 그것은 달려있다. – granadaCoder

+0

내 대답을 편집했습니다. – granadaCoder

0

규칙 # 1 : 연결 문자열이 더 web.config 또는 다른 설정 파일에서합니다. 또는 OS 레지스트리에있는 경우도 있습니다.

NET의 각 페이지마다 정의 된 연결 문자열을 사용하면 보안, 유지 보수 및 기타 여러 가지 이유로 나쁜 관행이되며 그 위에는이를 빌드하는 프로그래머의 자격이 낮은 것으로 나타납니다.

규칙 # 2. 인라인 SQL 문을 사용할 수 있지만 규칙 # 1과 같은 이유로 나쁜 생각입니다. 액세스 나 Excel 또는 일반 텍스트 파일을 데이터 저장소로 사용하는 동안 좋아하지 않는 한 매개 변수화 된 저장 프로 시저를 사용하십시오.

그래서 당신의 web.config 당신이 다음해야 항목에 : C 번호는 당신을 허용하지 않습니다 :

<connectionStrings> 
    <add name="DBCS" 
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|ProjectDatabases.mdf;Integrated Security=True;User Instance=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

는 코드에서 당신은 당신은 단순한 이유에 대한 명시 적 옵션이 필요하지 않습니다

Public void main() 
{ 
    String CONN 
    String SQLString 
CONN = String.Format(ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString, rootPath); 
SQLString=/// your stored procedure and parameters if any 
SqlCommand cmd = new SqlCommand(); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd = new SqlCommand(SQLString), CONN); 
CONN.Open(); 
SqlDataReader reader = cmd.ExecuteReader(); 

/// do what ever you need to work with your data like build a string, html document etc 
closeConn(); 
} 

public void closeConn() 
{ 
      if (reader != null) 
      { 
       reader.Close(); 
      } 

      if (CONN!= null) 
      { 
       CONN.Close(); 
      } 
} 

전화 선언되지 않은 변수를 사용하십시오.