Подключение к базе данных SQL в aspx, c # - PullRequest
1 голос
/ 14 июня 2011

У меня сейчас есть страница 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 Ответ

1 голос
/ 14 июня 2011

Поскольку код ASP.NET не использует стандартную статическую точку входа void Main (), вам нужно поместить код в Main где-нибудь еще, например, в Page_Load.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...