<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<Script language="VB" Runat="Server">
'strSQL 为 SQL 语句,FileName 为数据库文件名,TableName 为数据表名称。
Function CreateDataSet(strSQL As String, FileName As String, TableName As String) As DataSet
Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("news.mdb")
Dim objCmd As New OleDbDataAdapter(strSQL, ConnString)
Dim DS As New DataSet()
objCmd.Fill(DS, TableName)
CreateDataSet = DS
End Function
'BindList 过程用来指定数据源,并连接到 DataGrid 控件
Sub BindList()
myDataGrid.DataSource = CreateDataSet("Select * From news", "news.mdb", "news")
myDataGrid.DataBind()
End Sub Sub Page_Load(sender As Object, e As Eventargs)
If Not IsPostBack Then BindList()
End Sub '用来进入数据编辑模式
Sub DataGrid_EditCommand(sender As Object, e As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = e.Item.ItemIndex
BindList()
End Sub '用来离开数据编辑模式
Sub DataGrid_CancelCommand(sender As Object, e As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = -1
BindList()
End Sub '用来更新数据
Sub DataGrid_UpdateCommand(sender As Object, e As DataGridCommandEventArgs)
Dim news_head As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text
Dim news_body As String = CType(e.Item.Cells(2).Controls(0), TextBox).Text
Dim post_date As date = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim strSQL As String
strSQL = "Update news Set news_head='" & news_head & "', news_body=" & news_body & ", post_date=" & post_date & " Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'" Dim objConn As New OleDbConnection()
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("news.mdb")
objConn.Open()
Dim objCmd As New OleDbCommand(strSQL, objConn)
objCmd.ExecuteNonQuery
myDataGrid.EditItemIndex = -1
BindList()
End Sub
</Script><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<body MS_POSITIONING="GridLayout">
<Form Runat="Server" ID="Form1">
<Asp:DataGrid Runat="Server" Id="myDataGrid" AutoGenerateColumns="False" DataKeyField="news_id" HorizontalAlign="Center"
Width="650" OnEditCommand="DataGrid_EditCommand" OnUpdateCommand="DataGrid_UpdateCommand"
OnCancelCommand="DataGrid_CancelCommand">
<HeaderStyle Font-Size="Small" Font-Bold="True" HorizontalAlign="Center" ForeColor="#FFFFCC"
BackColor="#990000" />
<ItemStyle Font-Size="X-Small" ForeColor="#330099" />
<Columns>
<Asp:TemplateColumn HeaderText="编号">
<ItemTemplate>
<%# Container.DataItem("news_id") %>
</ItemTemplate>
<EditItemTemplate>
<%# Container.DataItem("news_id") %>
</EditItemTemplate>
</Asp:TemplateColumn>
<Asp:BoundColumn HeaderText="标题" DataField="news_head" />
<Asp:BoundColumn HeaderText="内容" DataField="news_body" />
<Asp:BoundColumn HeaderText="日期" DataField="post_date" />
<Asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" HeaderText="功能" ItemStyle-HorizontalAlign="Center" />
</Columns>
</Asp:DataGrid>
</Form>
</body>
错误:
语法错误 (操作符丢失) 在查询表达式 '2004-11-23 5:42:25' 中。
要是把更新改成
strSQL = "Update news Set news_head='" & news_head & "', news_body=" & news_body & " Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'"错误又变成,
至少一个参数没有被指定值。
帮帮我啊,为什么会这样呢?
<%@ Import Namespace="System.Data" %>
<Script language="VB" Runat="Server">
'strSQL 为 SQL 语句,FileName 为数据库文件名,TableName 为数据表名称。
Function CreateDataSet(strSQL As String, FileName As String, TableName As String) As DataSet
Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("news.mdb")
Dim objCmd As New OleDbDataAdapter(strSQL, ConnString)
Dim DS As New DataSet()
objCmd.Fill(DS, TableName)
CreateDataSet = DS
End Function
'BindList 过程用来指定数据源,并连接到 DataGrid 控件
Sub BindList()
myDataGrid.DataSource = CreateDataSet("Select * From news", "news.mdb", "news")
myDataGrid.DataBind()
End Sub Sub Page_Load(sender As Object, e As Eventargs)
If Not IsPostBack Then BindList()
End Sub '用来进入数据编辑模式
Sub DataGrid_EditCommand(sender As Object, e As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = e.Item.ItemIndex
BindList()
End Sub '用来离开数据编辑模式
Sub DataGrid_CancelCommand(sender As Object, e As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = -1
BindList()
End Sub '用来更新数据
Sub DataGrid_UpdateCommand(sender As Object, e As DataGridCommandEventArgs)
Dim news_head As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text
Dim news_body As String = CType(e.Item.Cells(2).Controls(0), TextBox).Text
Dim post_date As date = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim strSQL As String
strSQL = "Update news Set news_head='" & news_head & "', news_body=" & news_body & ", post_date=" & post_date & " Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'" Dim objConn As New OleDbConnection()
objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("news.mdb")
objConn.Open()
Dim objCmd As New OleDbCommand(strSQL, objConn)
objCmd.ExecuteNonQuery
myDataGrid.EditItemIndex = -1
BindList()
End Sub
</Script><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<body MS_POSITIONING="GridLayout">
<Form Runat="Server" ID="Form1">
<Asp:DataGrid Runat="Server" Id="myDataGrid" AutoGenerateColumns="False" DataKeyField="news_id" HorizontalAlign="Center"
Width="650" OnEditCommand="DataGrid_EditCommand" OnUpdateCommand="DataGrid_UpdateCommand"
OnCancelCommand="DataGrid_CancelCommand">
<HeaderStyle Font-Size="Small" Font-Bold="True" HorizontalAlign="Center" ForeColor="#FFFFCC"
BackColor="#990000" />
<ItemStyle Font-Size="X-Small" ForeColor="#330099" />
<Columns>
<Asp:TemplateColumn HeaderText="编号">
<ItemTemplate>
<%# Container.DataItem("news_id") %>
</ItemTemplate>
<EditItemTemplate>
<%# Container.DataItem("news_id") %>
</EditItemTemplate>
</Asp:TemplateColumn>
<Asp:BoundColumn HeaderText="标题" DataField="news_head" />
<Asp:BoundColumn HeaderText="内容" DataField="news_body" />
<Asp:BoundColumn HeaderText="日期" DataField="post_date" />
<Asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" HeaderText="功能" ItemStyle-HorizontalAlign="Center" />
</Columns>
</Asp:DataGrid>
</Form>
</body>
错误:
语法错误 (操作符丢失) 在查询表达式 '2004-11-23 5:42:25' 中。
要是把更新改成
strSQL = "Update news Set news_head='" & news_head & "', news_body=" & news_body & " Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'"错误又变成,
至少一个参数没有被指定值。
帮帮我啊,为什么会这样呢?
strSQL = "Update news Set news_head='" & news_head & "', news_body='" & news_body & "' Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'"
postdate那个加##试试
strSQL = "Update news Set news_head='" & news_head & "', news_body='" & news_body & "',postdate=#"& postdate&"# Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'"
strSQL = "Update news Set news_head='"& news_head &"', news_body='"& news_body &"',post_date=#"& post_date &"# Where " & myDataGrid.DataKeyField & "='" & myDataGrid.DataKeys(e.Item.ItemIndex) & "'"
但不行啊,错误是:标准表达式中数据类型不匹配。
news_head,news_body都是文本的,post_date是日期的
我还想知道news_body要是改成备注的,还用单引号吗?像这样的规则哪里有讲啊?