|
submitButton_Click()事件处理程序目前从会议特性中组合了一个字符串,并在 reulstLabel控件中显示它。要给数据库添加一个会议,需要把创建出来的字符串重新格式化到一个SQL INSERT查询中,并执行它。
注意:为了把数据写入Access数据库,ASPNET用户(在默认情况下运行ASP.NET进程的账户)必须明确地拥有文件的写入许可。这可以使用Windows资源管理器来赋予。在比较高级的场合下,可以使用其他账户访问资源,例如域账户用于访问网络上其他地方的SQL Server实例。在ASP.NET中有这个功能(通过模拟、COM+服务或其他方式实现),但它超出了本书的范围。
下面的许多代码都是很熟悉的:
protected void submitButton_Click(object sender, System.EventArgs e)
{
if (this.IsValid)
{
String attendees = "";
foreach (ListItem attendee in attendeeList.Items)
{
if (attendee.Selected)
{
attendees += attendee.Text + " (" + attendee.Value + "), ";
}
}
attendees += " and " + nameBox.Text;
String dateString =
calendar.SelectedDate.Date.Date.ToShortDateString();
String oleDbCommand = "INSERT INTO Events (Name, Room, " +
"AttendeeList, EventDate) VALUES ('" +
eventBox.Text + "', '" +
roomList.SelectedItem.Value + "', '" +
attendees + "', '" + dateString + "')";
创建了SQL查询字符串后,就可以使用它构建OleDb.OleDbCommand对象了:
System.Data.OleDb.OleDbCommand insertCommand =
new System.Data.OleDb.OleDbCommand(oleDbCommand,
oleDbConnection1);
接着重新打开在Page_Load()中断开的连接(这可能不是最高效的方式,但很适合于演示),执行查询:
oleDbConnection1.Open();
int queryResult = insertCommand.ExecuteNonQuery();
ExecuteNonQuery()返回一个整数,表示查询会影响表中的多少行。如果它等于1,插入就是成功的。此时如果把一个成功的信息放在resultLabel中,执行一个新查询,用会议的新列表重新填充eventTable和数据集(首先清除数据集中的数据,否则会议日期就会重叠),把日历选择改为一个新的、没有会议的日期:
|