2011-07-14 5 views
2

正直なところ、私は本当にこのことを学んでいます。私はClassic ASPを何年も使っていて、.netに切り替えるだけです。これまでのところ、私は楽しくはありませんが、私は試していますし、私は辞めるつもりはありません。私が苦労している小さな部分の1つは、クエリを実行してレコードを更新することです。それも可能クエリを実行して値を取得し、次にASP.net(VB)のレコードを更新します

 
    Set objRS = Server.CreateObject ("ADODB.RecordSet")

ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
      "Data Source=G:\Inetpub\wwwroot\TestPage\TheData\TestData.mdb;" & _ 
      "Persist Security Info=False" 

SqlStr = "SELECT * " & _ 
     "FROM Techs " & _ 
     "WHERE UserID = " & UserID & " " 

objrs.Open SqlStr, ConStr, adOpenStatic, adLockOptimistic,adCmdText 
If Objrs.recordCount <> 0 Then 
    TechUserName = Objrs("TechUserName") 
    Objrs.Update 
     Objrs("LastLogin") = Now() 
    Objrs.Update 
Else 
    Objrs.AddNew 
     Objrs("UserID") = UserID 
    Objrs.Update 
End If 
Objrs.Close 

Set objRS = Nothing 

です:でも、私はのような単純な何かをする方法を考え出す厳しい時間を過ごして、例のためのグーグル?誰かがASP.net(VB)で上記のコードを行うのを手伝ってもらえますか、これを行う方法については本当に良い徹底的なチュートリアルを教えてください。 ありがとうございます。

+0

複数のレコードを表示して挿入/編集/削除する場合は、SqlDataSourceを使用してASP.NetのGridViewを使用できます。あなたが探しているものなら、もっとアップロードすることができます。 http://www.asp.net/general/videos/lesson-8-working-with-the-gridview-and-formview – Win

+0

これはvb.netよりも古典的なASPとよく似ています –

答えて

0

私はそれを持っています!

Dim SqlStr As String 
Dim ConStr As String = ConfigurationManager.ConnectionStrings("TCConStr").ConnectionString 

SqlStr = "SELECT * " & _ 
     "FROM TechUsers " & _ 
     "WHERE TechWWID = " & Chr(34) & TechWWID & Chr(34) & " " & _ 
     "AND TechEmplNum = " & TechEmplNum & " " 

Dim CN As OleDbConnection = New OleDbConnection(ConStr) 
CN.Open() 
Dim DA As OleDbDataAdapter = New OleDbDataAdapter(SqlStr, CN) 
Dim DS As New DataSet 
DA.Fill(DS, "TechUsers") 
Dim DT As DataTable = DS.Tables("TechUsers") 
Dim RecCount As Integer = DT.Rows.Count 
Dim CB As OleDbCommandBuilder = New OleDbCommandBuilder(DA) 

If RecCount = 0 Then 
    DA.InsertCommand = CB.GetInsertCommand() 
    Dim DR As DataRow = DT.NewRow() 
    DR("TechName") = TechName 
    DR("TechWWID") = TechWWID 
    DR("TechEmplNum") = TechEmplNum 
    DR("FirstLogin") = Date.Now() 
    DR("LastLogin") = Date.Now() 
    DR("LoginCount") = 1 
    DT.Rows.Add(DR) 
    DA.Update(DS, "TechUsers") 
Else 
    Dim DR As DataRow = DT.Rows(0) 
    Dim LoginCount As Integer = DR("LoginCount") 
    TestStuff.InnerHtml = TestStuff.InnerHtml & "<br > " & LoginCount 
    DA.UpdateCommand = CB.GetUpdateCommand() 
    DR("LastLogin") = Date.Now() 
    DR("LoginCount") = LoginCount + 1 
    DA.Update(DS, "TechUsers") 
End If 

CN.Close() 

これを行う手がかりを皆様にありがとうございます。

1

ああ、まずは - あなたは.netで古典的なVBのことをしようとしています。 それをスクラップします。これ以上のカーソルはありません。あなたは基本的にデータセットまたはデータ読み取り装置(または単一の値)に戻って、クライアント側のデータ

は大体参照: http://msdn.microsoft.com/en-us/library/bh8kx08z%28v=VS.100%29.aspx

彼らは基本的に 薄暗い接続され、彼らは接続を取得スポットを欠場ちょうど( -

あなたが戻ってあなたのデータセットを持っていたら)

を connection.Dispose(終了したら、あなたはすべてを処分することを確認してください新しいSqlConnectionオブジェクト( "; UID =ユーザ名; PWD = whatverサーバー= localhost" を)としてc#構文)

 
foreach(DataRow row in yourDataSet.Tables[0].Rows) 
{ 
    Debug.WriteLine(row["YourFieldName"]) 
} 

データリーダーは、以下を参照してください http://www.developerfusion.com/article/4278/using-adonet-with-sql-server/2/

違いは、データセットは、クライアント側でロードされたすべてのデータを持っています。あまりにも、サーバー側のカーソルとは少し異なるものです。 DataReaderはスクロールしながら結果をストリーミングします。この大きなデータセットをメモリに作成するオーバーヘッドはそれほど高速ではありません。

これはあなたが始めたことを願っています.ADOのことを忘れないでください。もう使用されません。

+0

私は '編集 '部分。このmsの記事を参照してください。基本的にUpdateCommandを使用してデータを送り返すだけです。 http://support.microsoft.com/kb/301248 –

0

VB.NetのMS Accessデータベースに対してSQLコマンドを実行するためにthis linkをチェックしてください。

0

NoAliasはあなたに言ったように、ではなく、を作ります。は間違ったスタートになります。

は、このサンプルのようにパラメータ化されたSQL文を、試してみてくださいなど、引用符が倍増していることを忘れないでください、あなたのSQLにテキストを挿入することを忘れる:

私は4 colunms、CollCodeとCollSeqを持つテーブルを持っていますTermTypeとTermTextは変更可能なデータです このコードでは、SQLにtextvaluesが設定されている場合に、パラメータinstaedを持つ行を挿入、更新、または削除する方法について説明しています。 コードはアクセスのみ有効で、SQL ServerまたはMySQLはテンプレートごとに異なるコードを必要とし、プログラムの最初の部分で異なるDbTypes

を持っている:プログラムの処理部に

 ' select 
    Dim SQLaxSelect As String = "SELECT DISTINCT CollSeq FROM SearchTerms WHERE CollCode = ? ORDER BY CollSeq" 
    Dim DRaxSelect As OleDbDataReader = Nothing 
    Dim DCaxSelect As OleDbCommand 
    Dim axSelP1 As New OleDbParameter("@CollCode", OleDbType.VarChar, 4) 
    DCaxSelect = New OleDbCommand(SQLaxSelect, DbConn) 
    DCaxSelect.Parameters.Add(axSelP1) 


    ' Insert 
    Dim DbConn As New OleDbConnection(SqlProv) 
    Dim SQLTwInsert As String = "INSERT INTO SearchTerms (CollCode, CollSeq, TermType, TermText) VALUES (?, ?, ?, ?)" 
    Dim DRTwInsert As OleDbDataReader = Nothing 
    Dim DCCTwInsert As OleDbCommand 
    Dim TwInsP1 As New OleDbParameter("@CollCode", OleDbType.VarChar, 4) 
    Dim TwInsP2 As New OleDbParameter("@CollSeq", OleDbType.Integer, 4) 
    Dim TwInsP3 As New OleDbParameter("@TermType", OleDbType.VarChar, 4) 
    Dim TwInsP4 As New OleDbParameter("@TermText", OleDbType.VarChar, 255) 
    DCCTwInsert = New OleDbCommand(SQLTwInsert, DbConn) 
    DCCTwInsert.Parameters.Add(TwInsP1) 
    DCCTwInsert.Parameters.Add(TwInsP2) 
    DCCTwInsert.Parameters.Add(TwInsP3) 
    DCCTwInsert.Parameters.Add(TwInsP4) 

    ' Delete 
    Dim SQLTwDelete As String = "DELETE FROM SearchTerms WHERE CollCode = ? AND CollSeq = ? AND TermType = ? AND TermText = ?" 
    Dim DRTwDelete As OleDbDataReader = Nothing 
    Dim DCCTwDelete As OleDbCommand 
    Dim TwDelP1 As New OleDbParameter("@CollCode", OleDbType.VarChar, 4) 
    Dim TwDelP2 As New OleDbParameter("@CollSeq", OleDbType.Integer, 4) 
    Dim TwDelP3 As New OleDbParameter("@TermType", OleDbType.VarChar, 4) 
    Dim TwDelP4 As New OleDbParameter("@TermText", OleDbType.VarChar, 255) 
    DCCTwDelete = New OleDbCommand(SQLTwDelete, DbConn) 
    DCCTwDelete.Parameters.Add(TwDelP1) 
    DCCTwDelete.Parameters.Add(TwDelP2) 
    DCCTwDelete.Parameters.Add(TwDelP3) 
    DCCTwDelete.Parameters.Add(TwDelP4) 

    ' Update 
    Dim SQLTwUpdate As String = "UPDATE SearchTerms SET TermType = ?, TermText = ? WHERE CollCode = ? AND CollSeq = ? AND TermType = ? AND TermText = ?" 
    Dim DRTwUpdate As OleDbDataReader = Nothing 
    Dim DCCTwUpdate As OleDbCommand 
    Dim TwUpdP1 As New OleDbParameter("@TermType", OleDbType.VarChar, 4) 
    Dim TwUpdP2 As New OleDbParameter("@TermText", OleDbType.VarChar, 255) 
    Dim TwUpdP3 As New OleDbParameter("@CollCode", OleDbType.VarChar, 4) 
    Dim TwUpdP4 As New OleDbParameter("@CollSeq", OleDbType.Integer, 4) 
    Dim TwUpdP5 As New OleDbParameter("@oldTermType", OleDbType.VarChar, 4) 
    Dim TwUpdP6 As New OleDbParameter("@oldTermText", OleDbType.VarChar, 255) 
    DCCTwUpdate = New OleDbCommand(SQLTwUpdate, DbConn) 
    DCCTwUpdate.Parameters.Add(TwUpdP1) 
    DCCTwUpdate.Parameters.Add(TwUpdP2) 
    DCCTwUpdate.Parameters.Add(TwUpdP3) 
    DCCTwUpdate.Parameters.Add(TwUpdP4) 
    DCCTwUpdate.Parameters.Add(TwUpdP5) 
    DCCTwUpdate.Parameters.Add(TwUpdP6) 

を:

 'select 
        axSelP1.Value = requested key value CollCode 
        Try 
         DRaxSelect = DCaxSelect.ExecuteReader() 
         Do While (DRaxSelect.Read()) 
          'get value, first SELECTed value has index 0 
          CollSeq = GetDbIntegerValue(DRaxSelect, 0) ' routine to convert NULL in 0 
         Loop 
        Catch ex As Exception 
         your type of report exception 
        Finally 
         If Not (DRaxSelect Is Nothing) Then 
          DRaxSelect.Dispose() 
          DRaxSelect.Close() 
         End If 
        End Try 

     ' Update 
        TwUpdP1.Value = new value TermType 
        TwUpdP2.Value = new value TermText 
        TwUpdP3.Value = key value CollCode 
        TwUpdP4.Value = key value CollSeq 
        TwUpdP5.Value = old value TermType to avoid updating a row that 1 millisecond earlier was modified by someone else 
        TwUpdP6.Value = old value TermText 
        Try 
         DRTwUpdate = DCCTwUpdate.ExecuteReader() 
        Catch ex As Exception 
         your type of report exception 
        Finally 
         If Not (DRTwUpdate Is Nothing) Then 
          DRTwUpdate.Dispose() 
          DRTwUpdate.Close() 
         End If 
        End Try 

    ' Insert 
        TwInsP1.Value = new key value CollCode 
        TwInsP2.Value = new key value CollSeq 
        TwInsP3.Value = value TermType 
        TwInsP4.Value = value TermText 
        Try 
         DRTwInsert = DCCTwInsert.ExecuteReader() 
        Catch ex As Exception 
         your type of report exception 
        Finally 
         If Not (DRTwInsert Is Nothing) Then 
          DRTwInsert.Dispose() 
          DRTwInsert.Close() 
         End If 
        End Try 
    ' Delete 
        TwDelP1.Value = key value CollCode 
        TwDelP2.Value = key value CollSeq 
        TwDelP3.Value = old value TermType to avoid deleting a row that 1 millisecond earlier was modified by someone else 
        TwDelP4.Value = old value TermText 
        Try 
         DRTwDelete = DCCTwDelete.ExecuteReader() 
        Catch ex As Exception 
         your type of report exception 
        Finally 
         If Not (DRTwDelete Is Nothing) Then 
          DRTwDelete.Dispose() 
          DRTwDelete.Close() 
         End If 
        End Try 

(モジュールで)私の日常

Friend Function GetDbIntegerValue(ByVal Dr As OleDbDataReader, ByVal nr As Integer) As Integer 
    If IsDBNull(Dr.Item(nr)) Then 
     Return 0 
    Else 
     Return Dr.GetInt32(nr) 
    End If 
End Function 
関連する問題