当前位置导航:炫浪网>>网络学院>>编程开发>>Visual C#教程

C#高级编程:给数据库添加会议数据

  ——此文章摘自《C#高级编程(第3版)》定价:128元 特价:100.1元 购买

  daEvents.Fill(ds, "Events");

  eventTable = ds.Tables["Events"];

  calendar.SelectedDate =

  getFreeDate(calendar.SelectedDate.AddDays(1));

  }

  如果ExecuteNonQuery()返回的数字不是1,就会有问题。在本例中不必担心,只需要在resultLabel中显示一个故障通知:

  else

  {

  resultLabel.Text = "Event not added due to DB access "

  + "problem.";

  }

  最后再次断开连接,支持数据的会议登记应用程序的就完成了。

  oleDbConnection1.Close();

  }

  }

  注意:由于SQL INSERT查询的语法,必须避免在会议名称中使用某些字符,例如单引号“'”,因为它们会导致出错。实施一个定制的验证规则是相当简单的,可以防止用户使用这些字符,或者在插入数据之前和读取数据之后,使用某种类型的转义字符,但这里没有介绍这段代码。

  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和数据集(首先清除数据集中的数据,否则会议日期就会重叠),把日历选择改为一个新的、没有会议的日期:

 

 if (queryResult == 1)

  {

  resultLabel.Text = "Event Added.";

  daEvents = new System.Data.OleDb.OleDbDataAdapter(

  "SELECT * FROM Events", oleDbConnection1);

  ds.Clear();

相关内容
赞助商链接