VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#高级编程之给数据库添加会议数据

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  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();

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

 

 

  创建了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();

daEvents.Fill(ds, "Events");
                   eventTable = ds.Tables["Events"];
                   calendar.SelectedDate =
                                  getFreeDate(calendar.SelectedDate.AddDays(1));
                }  



相关教程