连接到aspx中的SQL数据库,c#

时间:2011-06-14 17:26:59

标签: c# asp.net sql database stored-procedures

我目前有一个aspx页面,它有一个通过电话线收集数据的脚本。数据当前正在写入文本文件,该文件通过DTS作业在夜晚结束时泵送到数据库。我需要的是将aspx页面中的数据写入数据库。我遇到的部分问题是,当aspx页面只包含脚本时,我对如何写入数据库感到陌生。我试过在脚本之前和之后打开连接,没有运气。任何想法,建议或文档链接将不胜感激。

这是我到目前为止所做的:

<script language="C#" runat="server">

 public class SQLSproc
       {
           public static void Main()
           {
               string connectionString = "server=ABC;database=abc;uid=abc;pwd=1234";
               SqlConnection mySqlConnection = new SqlConnection(connectionString);
               string procedureString = "Callin_Insert";
               SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
               mySqlCommand.CommandText = procedureString;
               mySqlCommand.CommandType = CommandType.StoredProcedure;
               mySqlConnection.Open();
               mySqlCommand.ExecuteNonQuery();
               SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
               mySqlDataAdapter.SelectCommand = mySqlCommand;
               mySqlConnection.Close();

           }

       }

Boolean ParseXML(string XMLContent)
       {
         try
         {
           XmlDocument doc = new XmlDocument();
           doc.LoadXml(XMLContent);

           String MenuID, Duration, CallerID, CallID, DateAndTime, VoiceFileName;
           XmlNode TempNode;
           Byte[] VoiceFile;

           XmlElement root = doc.DocumentElement;
           XmlAttributeCollection attrColl = root.Attributes;

           //parse inbound values
           MenuID      = attrColl["menuid"].Value;
           Duration    = attrColl["duration"].Value;
           CallID      = attrColl["callid"].Value;
           CallerID    = attrColl["callerid"].Value;

           //writed parsed values to file
           StreamWriter w = File.AppendText(Request.MapPath("summaryincallISM.txt"));

           //w.Write(DateTime.Now.ToString("MM/dd/yyyy,HH:mm:ss"));

           w.Write(String.Format("\"{0:MM/dd/yyyy}\",\"{0:HH:mm:ss}\"", DateTime.Now));

           //w.WriteLine("MenuId: " + MenuID);
           //w.WriteLine("Duration: " + Duration);
           //w.WriteLine("CallId: " + CallID);
           //w.WriteLine("CallerId: " + CallerID);

           XmlNodeList NodeCount = doc.SelectNodes("/campaign/prompts/prompt" );
           foreach( XmlNode node in NodeCount)
           {
                attrColl = node.Attributes;

                //w.WriteLine("Prompt ID: " + attrColl["promptid"].Value);
                //w.WriteLine("Keypress : " + attrColl["keypress"].Value);
                //w.Write("," + attrColl["keypress"].Value);

                w.Write("," + "\"" + attrColl["keypress"].Value + "\"");

                if (node.HasChildNodes)
                {
                   TempNode = node.FirstChild;
                   attrColl = TempNode.Attributes;

                   //convert file to binary
                   VoiceFile = System.Convert.FromBase64String(TempNode.InnerText);
                   VoiceFileName = attrColl["filename"].Value;

                   //save file in application path
                   FileStream fs = new FileStream(Request.MapPath(VoiceFileName), FileMode.OpenOrCreate);
                   BinaryWriter bw = new BinaryWriter(fs);
                   bw.Write((byte[]) VoiceFile);
                   bw.Close();
                   fs.Close();

                   w.WriteLine("Filename : " + VoiceFileName);
                }
           }

 void Page_Load(object sender, System.EventArgs e)
       {
          try
          {
             String xmlcontent, PostResponse, campaign;
             Byte[] Bindata = Request.BinaryRead(Request.TotalBytes);

             string XML;
             XML = System.Text.Encoding.ASCII.GetString(Bindata);
             StreamWriter w = File.AppendText(Request.MapPath("xmlsummaryincall.txt"));
             w.WriteLine("--- "  + DateTime.Now + " ------------------------------------------------------");
             w.WriteLine(XML.Replace("<?xml version=\"1.0\"?>", ""));  //needed so ?xml tag will display as text
             w.WriteLine("");
             w.WriteLine("");          
             w.Close();

             if (!ParseXML(XML)) Response.Write("Failed");

           }
           catch (Exception error)
           {
             Response.Write(error.Message);
           }
       }

</script>

1 个答案:

答案 0 :(得分:1)

由于ASP.NET代码不使用标准的静态void Main()入口点,因此您需要将代码放在Main的其他位置,例如Page_Load。