FLASH通过C#读取数据库问题 语言:c#问题:请问FLASH 怎么才能通过 C#读取ACCESS数据库中数据,或通过XML读取数据库信息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个要讲很多哦!!主要是Flash读取和显示的问题了!! 举一个简单的例子就可以比如FALSH 读取数据库中的一条数据 显示出来 C#可以读取库中的数据,写成xml输出在页面。至于flash怎么样读取这个xml,肯定是可以的,我们现在就是这么做的。但是我不会flash http://download.csdn.net/source/1285276 using System.Xml; XmlTextWriter writer = new XmlTextWriter(this.Response.OutputStream, System.Text.Encoding.UTF8); //data开始 writer.WriteStartElement("data"); //total开始 writer.WriteElementString("total", "4"); writer.WriteStartElement("bgcolor"); writer.WriteElementString("main", "0x556275"); writer.WriteElementString("linea", "0x556275"); writer.WriteElementString("lineb", "0x556275"); writer.WriteEndElement(); writer.WriteStartElement(""); writer.WriteElementString("show", "false"); writer.WriteElementString("xmax", decimal.Round(_transmit.END_HZ,0).ToString()); writer.WriteElementString("ymax", "125"); writer.WriteElementString("xmin", decimal.Round(_transmit.START_HZ,0).ToString()); writer.WriteElementString("ymin", "0"); writer.WriteElementString("cur", "true"); writer.WriteEndElement(); if (Request.QueryString["st"] != null && Request.QueryString["st"].ToString() != "") { st = Request.QueryString["st"].ToString(); } //播出任务 List<TaskInfo> _tasks = new List<TaskInfo>(); _tasks = _planet.GetTasks(TransmitID); int i = 0; foreach (TaskInfo task in _tasks) { writer.WriteStartElement("ping"); writer.WriteElementString("id", i.ToString()); writer.WriteElementString("xpos", decimal.Round(task.START_HZ,0).ToString()); decimal taskWidth = task.END_HZ - task.START_HZ; writer.WriteElementString("width", decimal.Round(taskWidth,0).ToString()); writer.WriteElementString("height", decimal.Compare(task.EIRP, 10m) < 0 ? "10" : decimal.Round(task.EIRP, 0).ToString()); writer.WriteElementString("color", GetColorBySTS(task.ALARM_STS)); writer.WriteElementString("angle", "10"); writer.WriteStartElement("label"); if (st.ToLower() == "d") { writer.WriteCData("<font color='#000000' size='30'>△<b>" + decimal.Round(task.DELTA, 1).ToString() + "
 " + decimal.Round(task.UP_POWER, 1).ToString() + "
 " + decimal.Round(task.REST_POWER, 1).ToString() + "</b></font>"); } else { writer.WriteCData("<font color='#000000' size='30'>△<b>" + Math.Pow(10d, (Convert.ToDouble(task.DELTA) - 30d) / 10d).ToString("0.0") + "
 " + Math.Pow(10d, (Convert.ToDouble(task.UP_POWER) - 30d) / 10d).ToString("0.0") + "
 " + Math.Pow(10d, (Convert.ToDouble(task.REST_POWER) - 30d) / 10d).ToString("0.0") + "</b></font>"); } writer.WriteEndElement(); writer.WriteEndElement(); i++; } writer.WriteEndElement(); writer.Flush(); writer.Close(); Response.End(); 在Flex 里开发(Actionscript3.0), 可以通过WebService访问数据库 或者可以直接访问一个asp.net页面如果不想直接访问,生成的Swf可和包含它的页面进行javascript 交互。如果是在winform里包含swf进行交互,还没有搞过,不敢妄言 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" ContentType="text/xml" %>帮到底,记得前台加上ContentType="text/xml" 代码是抄来的吧我就要输出一条从数据库中读出的数据,然后用FLASH显示出这条数据你怎么弄的这么复杂呢? ActionScript 通过xml操作数据库参考 楼上的 我看不懂.,我没要那么复杂的怎么谁都不能给我举一个简单的例子吗?FALSH读取数据库中的一条数据显示出来, 通过ASPX,XML什么方法显示出来都行. 不是抄袭,是本人写的。都那么清楚了,没办法帮你了你学学XmlTextWriter 写xml文件! 一般把数据库内容从C#传递给Flash3种办法,一个常用的是flash1.SetVariable("flash_value", value);这样你可以把数据库读到的内容做成一个字符串传递过去,在flash端读成XML格式。另一个是flash1.CallFunction("<invoke name=\"FlashFunction\" returntype=\"xml\"><arguments><string>"Show me"</string></arguments></invoke>");相应的在flash里你就需要定义接受方法ExternalInterface.addCallback("FlashFunction", this, doSth);function doSth(str: String): String {}第2个方法是对传递多个参数很方便,也可以调用定义在flash中的某个功能。最后一个方法就是临时建立一个XML文件,把C#从数据库读到的内容写入XML文件,然后在flash里读出来。 楼主,那里面有我的逻辑。你肯定不能直接用了你用XmlTextWriter 用你自己的逻辑写一个你自己的xml流输出。上面只是教的方法。 哦, 你理解错啦, 你看下我问的问题, 我现在就需要一个简单的实例就可以, 我不是在问逻辑. 谁能给我一个简单的实例,就从数据库中读一个字出来 在FALSH中显示出来谁就帮到我了. flash读取XML还是很方便的,有E4X 我做了一下:首先建一个网页readData.aspx,读数据库的,在html页面上写,后台不要写:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="readData.aspx.cs" Inherits="readData" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><% SqlConnection myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DbaseConnectionString"].ConnectionString); myConn.Open(); SqlCommand myComm = new SqlCommand("Select top 1 name from A", myConn); SqlDataReader myReader = myComm.ExecuteReader(); string NAME = ""; if (myReader.Read()) NAME = myReader["name"].ToString(); myConn.Close(); Response.Write(NAME); %>表名为A,读一条记录,字段为name,运行这个网页,如果看到了name的值,那就是说第一步OK了!!第二建一个flash,最终发布名为read.swf1.在flash场景中拖入一个动态文本,在下方的属性面板中输入myName(实例名)2.新建一个层,在该层中加入代码(右击该层,点"动作")3.输入以下代码:set("myName","");function fload(){ myload=new LoadVars(); myload.sendAndLoad("readData.aspx",myload,"post");//注意readData.aspx就是第一部建立的 myload.onLoad=function(success){ _root["myName"]=myload["NAME"]; }}fload();//同时还注意文件都在网站的跟目录这时就可发布为read.swf,将read.swf拷贝到网站的跟目录!!第三再建一个网页,名为Default.aspx,显示read.swf在该html页面中输入代码:<embed src="read.swf" width="200" height="200"></embed>好!!运行Default.aspx,则一切OK!!name的值通过flash显示在网页上 var xml:XML=<root><a><a1 sth="sth1'>aa1</a1></a><a><a2 sth="sth2'>aa2</bb></a2></root>xml.a就是a节点的集合了,a[0],a[1]这样调用就行了xml..@sth是所有sth的集合一个点是子节点,两个点是所有子节点,包括子节点中的子节点,@是属性具体可以看E4X的相关内容,注意:AS3才支持 更正var xml:XML= <root> <a> <a1 sth="sth1'>aa1 </a1> </a> <a> <a2 sth="sth2'>aa2 </a2> </a> </root> 能看到readData.aspx的值,FLASH 什么都不显示! 对楼主抱歉了,粘贴有误,应该这样:第一步readData.aspx页面中:........ if (myReader.Read()) NAME ="&NAME=" +myReader["name"].ToString(); .......运行该页面应该看到:&NAME=你的数据第二步中1.在flash场景中拖入一个动态文本,在下方的属性面板中输入myName(实例名) 在属性面板中找到变量:输入myName,也就是说设置实例名还要设置变量名!!可同名!!该步骤中代码没问题!!第三步调用falsh文件可换种方式,确保无误!建一个网页,名为Default.aspx,显示read.swf 在该html页面中输入代码: ....<object codebase="http://download.macromedia.com/pub/shockwave/_ cabs/flash/swflash.cab#version=6,0,29,0" height="200" width="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" viewastext> <param name="Movie" value="read.swf"></object>肯定OK拉!!! 怎么结束本次循环进入下次循环 请问XML的博大精深在于什么? MDI 其中一个子窗体最大化,为什么所有子窗体都最大化了?? 发帖求解: 如何从一个Colletion 类型的转换为 string[] 数组类型? 内详. 为什么说变量未定义?代码如下 关于控件生成的问题!急~~~~~~~~~~ 如何用c#實現combobox下拉多列數據顯示與選擇 大家用什么好用的开源的grid控件.谢谢! 在C#中调用IIsWebServer方法时跳的异常 这样的TEXTBOX中的值要如何取出来, 创建windows服务有配置文件么?安装后在什么地方能找到? 方法出现的问题
主要是Flash读取和显示的问题了!!
至于flash怎么样读取这个xml,肯定是可以的,我们现在就是这么做的。但是我不会flash
//data开始
writer.WriteStartElement("data");
//total开始
writer.WriteElementString("total", "4"); writer.WriteStartElement("bgcolor");
writer.WriteElementString("main", "0x556275");
writer.WriteElementString("linea", "0x556275");
writer.WriteElementString("lineb", "0x556275");
writer.WriteEndElement(); writer.WriteStartElement("");
writer.WriteElementString("show", "false");
writer.WriteElementString("xmax", decimal.Round(_transmit.END_HZ,0).ToString());
writer.WriteElementString("ymax", "125");
writer.WriteElementString("xmin", decimal.Round(_transmit.START_HZ,0).ToString());
writer.WriteElementString("ymin", "0");
writer.WriteElementString("cur", "true");
writer.WriteEndElement(); if (Request.QueryString["st"] != null && Request.QueryString["st"].ToString() != "")
{
st = Request.QueryString["st"].ToString();
}
//播出任务
List<TaskInfo> _tasks = new List<TaskInfo>();
_tasks = _planet.GetTasks(TransmitID);
int i = 0;
foreach (TaskInfo task in _tasks)
{
writer.WriteStartElement("ping");
writer.WriteElementString("id", i.ToString());
writer.WriteElementString("xpos", decimal.Round(task.START_HZ,0).ToString());
decimal taskWidth = task.END_HZ - task.START_HZ;
writer.WriteElementString("width", decimal.Round(taskWidth,0).ToString());
writer.WriteElementString("height", decimal.Compare(task.EIRP, 10m) < 0 ? "10" : decimal.Round(task.EIRP, 0).ToString());
writer.WriteElementString("color", GetColorBySTS(task.ALARM_STS));
writer.WriteElementString("angle", "10");
writer.WriteStartElement("label");
if (st.ToLower() == "d")
{
writer.WriteCData("<font color='#000000' size='30'>△<b>" + decimal.Round(task.DELTA, 1).ToString() + "
 " + decimal.Round(task.UP_POWER, 1).ToString() + "
 " + decimal.Round(task.REST_POWER, 1).ToString() + "</b></font>");
}
else
{
writer.WriteCData("<font color='#000000' size='30'>△<b>" + Math.Pow(10d, (Convert.ToDouble(task.DELTA) - 30d) / 10d).ToString("0.0") + "
 " + Math.Pow(10d, (Convert.ToDouble(task.UP_POWER) - 30d) / 10d).ToString("0.0") + "
 " + Math.Pow(10d, (Convert.ToDouble(task.REST_POWER) - 30d) / 10d).ToString("0.0") + "</b></font>");
}
writer.WriteEndElement();
writer.WriteEndElement();
i++;
} writer.WriteEndElement(); writer.Flush();
writer.Close();
Response.End();
在Flex 里开发(Actionscript3.0),
可以通过WebService访问数据库 或者可以直接访问一个asp.net页面
如果不想直接访问,生成的Swf可和包含它的页面进行javascript 交互。如果是在winform里包含swf进行交互,还没有搞过,不敢妄言
我就要输出一条从数据库中读出的数据,然后用FLASH显示出这条数据你怎么弄的这么复杂呢?
参考
都那么清楚了,没办法帮你了
你学学XmlTextWriter 写xml文件!
flash1.CallFunction("<invoke name=\"FlashFunction\" returntype=\"xml\"><arguments><string>"Show me"</string></arguments></invoke>");相应的在flash里你就需要定义接受方法
ExternalInterface.addCallback("FlashFunction", this, doSth);
function doSth(str: String): String
{
}
第2个方法是对传递多个参数很方便,也可以调用定义在flash中的某个功能。最后一个方法就是临时建立一个XML文件,把C#从数据库读到的内容写入XML文件,然后在flash里读出来。
上面只是教的方法。
首先建一个网页readData.aspx,读数据库的,在html页面上写,后台不要写:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="readData.aspx.cs" Inherits="readData" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %><%
SqlConnection myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DbaseConnectionString"].ConnectionString);
myConn.Open();
SqlCommand myComm = new SqlCommand("Select top 1 name from A", myConn);
SqlDataReader myReader = myComm.ExecuteReader();
string NAME = "";
if (myReader.Read())
NAME = myReader["name"].ToString();
myConn.Close();
Response.Write(NAME);
%>
表名为A,读一条记录,字段为name,
运行这个网页,如果看到了name的值,那就是说第一步OK了!!第二建一个flash,最终发布名为read.swf
1.在flash场景中拖入一个动态文本,在下方的属性面板中输入myName(实例名)
2.新建一个层,在该层中加入代码(右击该层,点"动作")
3.输入以下代码:set("myName","");
function fload(){
myload=new LoadVars();
myload.sendAndLoad("readData.aspx",myload,"post");//注意readData.aspx就是第一部建立的
myload.onLoad=function(success){
_root["myName"]=myload["NAME"];
}
}
fload();//同时还注意文件都在网站的跟目录
这时就可发布为read.swf,将read.swf拷贝到网站的跟目录!!第三再建一个网页,名为Default.aspx,显示read.swf
在该html页面中输入代码:
<embed src="read.swf" width="200" height="200"></embed>好!!运行Default.aspx,则一切OK!!name的值通过flash显示在网页上
xml.a就是a节点的集合了,a[0],a[1]这样调用就行了
xml..@sth是所有sth的集合
一个点是子节点,两个点是所有子节点,包括子节点中的子节点,@是属性具体可以看E4X的相关内容,注意:AS3才支持
var xml:XML= <root> <a> <a1 sth="sth1'>aa1 </a1> </a> <a> <a2 sth="sth2'>aa2 </a2> </a> </root>
第一步readData.aspx页面中:
........
if (myReader.Read())
NAME ="&NAME=" +myReader["name"].ToString();
.......
运行该页面应该看到:
&NAME=你的数据第二步中
1.在flash场景中拖入一个动态文本,在下方的属性面板中输入myName(实例名)
在属性面板中找到变量:输入myName,
也就是说设置实例名还要设置变量名!!可同名!!
该步骤中代码没问题!!第三步调用falsh文件可换种方式,确保无误!
建一个网页,名为Default.aspx,显示read.swf
在该html页面中输入代码:
....
<object codebase="http://download.macromedia.com/pub/shockwave/_ cabs/flash/swflash.cab#version=6,0,29,0"
height="200" width="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
viewastext> <param name="Movie" value="read.swf"></object>肯定OK拉!!!