ajaxwebshop3 .NET表格数据增,删,改操作实例
AJAX作为做一种新兴而实用的web技术,已经越来越受到人们的广泛关注,AJAX开发有没有什么工具呢?如果不是十分了解dhtml,javascript等技术是不是就不能做AJAX开发呢?说到AJAX开发工具,就不能不提到joyistar WebShop了,它是一个完全可视化的AJAX技术开发环境。并且即使你暂时不是很清楚AJAX相关技术也可以进行基本的 web开发,下面就是笔者用webshop3.0做的一个简单的数据查询和对数据的增,删,改以及检索的实例。
功能介绍: WebShop从3.0版本在支持java开发的基础上开始已支持.NET的开发了,通过本例实现一个AJAX vs VB.NET的简单取数据,以及数据的增,删,改操作,利用简单的数据库连接设置就实现基本的数据常用操作。
一.创建数据表首先创建一个数据表,以access数据表为例,设置数据表名称为:demo.mdb,创建字段分别是PRODUCT_ID, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_AREA。设置数据表存放路径,本例中demo.mdb的路径为:d:\\db\\demo.mdb"。
二:实现数据查询:首先打开webshop3.0,新建工程,在工程对话框中键入工程名称和路径;
建好工程后在New .NET Service中设置工程所用的Language ,Service Type ,Class Name以及Directory。如本例中Directory设置为: …WebShop3e_beta /projects /vb_example/src/demo
设置好.NET Service 后,新建页面(File à New Page),在页面中的 “Data Access” ,中选择“Data Set”组件,在页面上设置两个DBPageNavigator ;三个DBEdit 和四个Span
具体每个组件设置如图:
如果对以上操作有不懂或者不明白的地方请参考笔者的上一篇文章,里面有详细的介绍,地址是:。。。。。。这里就不在重复了!如果在使用webshop过程中有什么不明白的也可以参考webshop的帮助文件或者在线faq(常见问题),这个很有帮助的,笔者一般有问题都是参考这两个东东。
今天我们将详细介绍下数据的增删改,要实现数据的增删改操作,也很简单,新建.NET Service 在ServiceType中选择”Updata Data”设置“class name”,此例中为:Simple_Update,在Simple.html页面中选择DataSet组件,在DataSet的“PostURL”属性中设置为:demo/Simple_Update.aspx (如图)。
打开Simple_Update.aspx,(如下图)你会看到基本代码都是已经写好了的,只需要自己根据需要修改或添加一部分简单的sql语句就可是了。怎么样想的很周到吧?
在代码中添加要操作的代码,(如图)。
下面就主要代码功能做个简单介绍:
action = xmlPost.GetAction(i) //获取操作
acttype = action.ActionType //获取操作类型1.////数据的update操作;
2.///////数据的delete操作;
If (acttype.Equals("delete")) Then
where = " where "
where = where + action.getField("PRODUCT_ID").Name + "='" + action.getField("PRODUCT_ID").Value + "'"
sql = "delete from product" + where
OleDbCommand.CommandText = sql
OleDbCommand.ExecuteNonQuery()
End If
3.//////数据的insert操作;
If (acttype.Equals("insert")) Then
Dim field As String = ""
Dim value As String = ""
For j As Integer = 0 To action.FieldCount - 1
field = field + action.getField(j).Name
If (action.getField(j).Name.Equals("PRODUCT_PRICE")) Then
value = value + action.getField(j).Value
Else
value = value + "'" + action.getField(j).Value + "'"
End If
If (j < action.FieldCount - 1) Then
field = field + ","
value = value + ","
End If
Next
完成后保存,运行,你就会发现,可以对数据库中的数据进行操作了,增删改都没有问题。
下面附上程序中的Query _Data 和 Updata_Data 代码清单,供读者参考:
///////////////////////////////////// Simple_Query.aspx.vb代码清单 ////////////////////////////////////////
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports joyistar.eip.util
Imports joyistar.eip.vo
Partial Class Simple_Query
Inherits System.Web.UI.Page
Private connString As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source= d:\\db\\demo.mdb"
Private sql As String = "select * from product"
Dim sqlCount As String = "select count(*) from product"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.ContentType = "text/xml"
Dim xml As String = HttpParser.getXML(Request.InputStream)
Dim xmlrequest As XmlRequest = New XmlRequest()
Dim conn As OleDbConnection = New OleDbConnection(connString)
Try
xmlrequest.Open(xml)
conn.Open()
Dim com As OleDbCommand = New OleDbCommand(sql, conn)
Dim objDA As OleDbDataAdapter = New OleDbDataAdapter(com)
Dim objDS As Data.DataSet = New Data.DataSet
Dim maxRow As Integer = xmlrequest.MaxRows
Dim recNo As Integer = xmlrequest.RecNo
'get rowCount
Dim rowCount As Integer
Dim MyConn As OleDbConnection = New OleDbConnection(connString)
MyConn.Open()
Dim MyComm As OleDbCommand = New OleDbCommand(sqlCount, MyConn)
rowCount = Cint(MyComm.ExecuteScalar())
xmlrequest.SetRecordCount(rowCount)
If maxRow = -1 Then
maxRow = rowCount
End If
objDA.Fill(objDS, recNo, maxRow, "product")
Dim i As Int32
Dim j As Int32
With objDS.Tables(0)
'fill fields
For j = 0 To .Columns.Count - 1
If .Columns.Item(j).DataType.Equals("STRING") Then
xmlrequest.AddField(.Columns.Item(j).ColumnName, System.Convert.ToString(.Columns.Item(j).DataType), .Columns.Item(j).MaxLength)
Else
xmlrequest.AddField(.Columns.Item(j).ColumnName, System.Convert.ToString(.Columns.Item(j).DataType))
End If
Next
'fill data
For i = 0 To .Rows.Count - 1
xmlrequest.Append()
For j = 0 To .Columns.Count - 1
xmlrequest.SetValue(.Columns.Item(j).ColumnName, .Rows(i).Item(j).ToString)
Next
Next
End With
Response.Write(xmlrequest.GetXml())
Response.Flush()
MyConn.Close()
Catch ex As Exception
xmlrequest.SetError(ex.Message)
Response.Write(xmlrequest.GetXml())
Response.Flush()
conn.Close()
End Try
End Sub
End Class
xmlrequest.AddField(.Columns.Item(j).ColumnName, System.Convert.ToString(.Columns.Item(j).DataType))
End If
Next
'fill data
For i = 0 To .Rows.Count - 1
xmlrequest.Append()
For j = 0 To .Columns.Count - 1
xmlrequest.SetValue(.Columns.Item(j).ColumnName, .Rows(i).Item(j).ToString)
Next
Next
End With
Response.Write(xmlrequest.GetXml())
Response.Flush()
MyConn.Close()
Catch ex As Exception
xmlrequest.SetError(ex.Message)
Response.Write(xmlrequest.GetXml())
Response.Flush()
conn.Close()
End Try
End Sub
End Class