怎样从数据库中读取数据生成树

怎样从数据库中读取数据生成树,第1张

private DataSet ds;

private SqlDataAdapter sqlDataAdapter1;

private int maxnodeid;

private void Form1_Load(object sender, SystemEventArgs e)

{

string strconn=ConfigurationSettingsAppSettings["ConnStr"];

sqlConnection1 = new SqlConnection(strconn);

thissqlConnection1Open();

//填充DataSet

thisCreateDataSet();

//从数据库中读取数据,通过递归生成树。

InitTree(thistreeView1Nodes,"0");

}

private void CreateDataSet()

{

thissqlDataAdapter1=new SqlDataAdapter("select from s_menu ",thissqlConnection1);

thisds=new DataSet();

thissqlDataAdapter1Fill(ds,"tree");

}

private void InitTree(TreeNodeCollection Nds,string parentId)

{

DataView dv=new DataView();

TreeNode tmpNd;

string intId;

dvTable=dsTables["tree"];

dvRowFilter="ParentId='" + parentId + "'" ;

foreach(DataRowView drv in dv)

{

tmpNd=new TreeNode();

tmpNdTag=drv["NodeId"]ToString();

tmpNdText=drv["NodeName"]ToString();

NdsAdd(tmpNd);

intId=drv["ParentId"]ToString();

InitTree(tmpNdNodes,tmpNdTagToString());

}

}

//新增节点 *** 作

private void insert(string type)

{//判断是新增树节点,还是子节点

string strinsert="insert into s_menu values('{0}','{1}','{2}')";

string strformat="";

if(type=="sub")

strformat=stringFormat(strinsert,maxnodeidToString(),thisselectnodeTagToString(),thisstrcomm);

else

strformat=stringFormat(strinsert,maxnodeidToString(),"0",thisstrcomm);

SqlCommand cmd=new SqlCommand(strformat,thissqlConnection1);

cmdExecuteNonQuery();

}

//为新增节点算出最大的节点值,并以此值作为新增的节点ID值

private int GetMaxNodeid()

{

int pre=0,last=0;

DataSet maxds=new DataSet();

thissqlDataAdapter1=new SqlDataAdapter("select nodeid from s_menu order by nodeid",thissqlConnection1);

thissqlDataAdapter1Fill(maxds);

for(int i=0;i{

if(i+1{

pre=intParse(maxdsTables[0]Rows[i][0]ToString());

last=intParse(maxdsTables[0]Rows[i+1][0]ToString());

if(last-pre!=1)

return pre+1;

}

}

return last+1;

}

private void getallnode(TreeNode tn)

{

foreach(TreeNode node in tnNodes)

{

listAdd(nodeTagToString());

if(nodeNodesCount>0)

{

getallnode(node);

}

}

}

private void treeView1_MouseDown(object sender, SystemWindowsFormsMouseEventArgs e)

{

//判断是否点击了某个节点

thisselectnode= thistreeView1GetNodeAt (eX ,eY );

if(selectnode==null)

thisisselected=false;

else

thisisselected=true;

}

private void menuAdd_Click(object sender, SystemEventArgs e)

{//判断是否点击了某个节点,若没有点击了,则是新增一个树节点

if(isselected==false)

{//算出新增树节点的ID值

maxnodeid=GetMaxNodeid();

TreeNode tmpNd=new TreeNode();

//赋值

tmpNdTag=thismaxnodeidToString();

FormCommon frmCommon=new FormCommon();

DialogResult result= frmCommonShowDialog();

if(result==DialogResultOK)

{//取到新增树节点的文本值

tmpNdText=frmCommonstrcomm;

thisstrcomm=frmCommonstrcomm;

//新增树节点

thistreeView1NodesAdd(tmpNd);

//插入数据库(说明插入的是树节点)

thisinsert("root");

//展开

thisselectnodeExpand();

}

}

else

{//判断是否点击了某个节点,若点击了,则是新增一个子节点

thiscontextAddSub();

}

}

private void contextAddSub()

{//得到新增子节点的ID值

maxnodeid=GetMaxNodeid();

TreeNode tmpNd=new TreeNode();

//赋值

tmpNdTag=thismaxnodeidToString();

FormCommon frmCommon=new FormCommon();

DialogResult result= frmCommonShowDialog();

if(result==DialogResultOK)

{//取到新增树节点的文本值

tmpNdText=frmCommonstrcomm;

thisstrcomm=frmCommonstrcomm;

//新增子节点

thisselectnodeNodesAdd(tmpNd);

//插入数据库(说明插入的是子节点)

thisinsert("sub");

//展开

thistreeView1SelectedNodeExpand();

}

}

//删除节点 *** 作

private void menuDel_Click(object sender, SystemEventArgs e)

{//新建一个ArrayList,用于保存要删除的节点下边的所有子节点

list=new ArrayList();

if(thisisselected==true)

{//得到删除的节点下边的所有子节点

getallnode(thisselectnode);

//把要删除的节点也加进去

listAdd(thisselectnodeTagToString());

//循环从数据库中删除

for(int i=0;i{

string strdel="delete s_menu where nodeid='{0}'";

string strformat="";

strformat=stringFormat(strdel,list[i]);

SqlCommand cmd=new SqlCommand(strformat,thissqlConnection1);

cmdExecuteNonQuery();

}

//从树中删除

thisselectnodeRemove();

}

}

//修改节点的值

private void menuEdit_Click(object sender, SystemEventArgs e)

{

if(thisisselected==true)

{

FormCommon frmCommon=new FormCommon();

DialogResult result= frmCommonShowDialog();

if(result==DialogResultOK)

{

string strdel="update s_menu set nodename= '{1}' where nodeid='{0}'";

string strformat="";

strformat=stringFormat(strdel,thisselectnodeTagToString(),frmCommonstrcomm);

SqlCommand cmd=new SqlCommand(strformat,thissqlConnection1);

cmdExecuteNonQuery();

thisselectnodeText=frmCommonstrcomm;

}

}

}

//遍历所有节点查找值

private void getvaluenode(TreeNodeCollection tn,string value)

{

foreach(TreeNode node in tn)

{

if(nodeNodesCount>0)

{

getvaluenode(nodeNodes,value);

}

if(nodeText==value)

listnodeAdd(node);

}

}

private void menuSearch_Click(object sender, SystemEventArgs e)

{

int j,k;

thislistnode=new ArrayList();

FormCommon frmCommon=new FormCommon();

DialogResult result= frmCommonShowDialog();

if(result==DialogResultOK)

{

TreeNode n =new TreeNode();

TreeNode temp=new TreeNode();

//下面的函数是填充listnode;

getvaluenode(thistreeView1Nodes,frmCommonstrcomm);

for(int i=0;i{

j=0;k=0;

n=(TreeNode)listnode[i];

if (n != null)

{

temp=n;

//得到上面结点的数量,并将数量保存到变量j;

for(;nParent!=null;)

{

n=nParent;

j++;

}

//恢复原值

n=temp;

//新建一个树结点数组做保存得到查询到的所有节点

TreeNode[] m=new TreeNode[j];

for(;nParent!=null;)

{

n=nParent;

m[k]=n;

k++;

}

for(int p=0;pm[p]Expand();

n=temp;

nForeColor=ColorRed;

}

}

}

}

private void treeView1_AfterLabelEdit(object sender, SystemWindowsFormsNodeLabelEditEventArgs e)

{

if(thistreeView1SelectedNodeText!=null)

{

string strdel="update s_menu set nodename= '{1}' where nodeid='{0}'";

string strformat="";strformat=stringFormat(strdel,thistreeView1SelectedNodeTagToString(),eLabelToString());SqlCommand cmd=new SqlCommand(strformat,thissqlConnection1);

cmdExecuteNonQuery();

}

}

private void treeView1_AfterSelect(object sender, SystemWindowsFormsTreeViewEventArgs e)

{

thislistBox1ItemsClear();

thislistBox1ItemsAdd(thistreeView1SelectedNodeFullPathToString());

}

}

}

在你SqlCommand sqlcom = new SqlCommand前面加一行

string str="update News set NewsTitile='" + ((TextBox)(GridView1Rows[eRowIndex]Cells[1]Controls[0]))TextToString() + "',NewsKind='" + ((TextBox)(GridView1Rows[eRowIndex]Cells[2]Controls[0]))TextToString() + "',NewsContents='" + ((TextBox)(GridView1Rows[eRowIndex]Cells[3]Controls[0]))TextToString() + "' where NewsID='" + GridView1DataKeys[eRowIndex]ValueToString() + "'";

然后在SqlCommand sqlcom = new SqlCommand这行下断点,运行,看看str的值倒底是什么,如果不确定,把它复制到数据库管理器里去运行。

privateList<string>getGX()

{

List<string>list=newList<string>();

stringsql="selectfromCodeGX";

DataTabledt=SqlHelpergetDataTable(sql);

foreach(DataRowrowindtRows)

{

listAdd(row["GXName"]ToString());

}

returnlist;

}

扩展资料

从数据库读出一列数据,处理完成后返回数组

publicArray[]getschoolinfo(){//函数返回一个数组

List<String>list=expMappergetSchoolInfo();

//list接受从mysql得到的数据

//@Select("SELECTDISTINCTexpSchoolFROMtbl_expInfo")从数据库中获得所有学校的名字并去除重复的

//publicList<String>getSchoolInfo();

//List指的是集合<>是泛型,里面指定了这个集合中存放的是什么数据

//声明一个数组

Array[]arraySchool=newArray[listsize()];

//声明一个list遍历器

Iteratoriterator=listiterator();

inti=0;

//遍历list的同时给数组赋值

while(iteratorhasNext()){

arraySchool[i]=newArray(i,(String)iteratornext());

i++;

}

returnarraySchool;

}

你既然安装了oracle 10g,而且能正常使用oracle 10g,那么我以在你自己的机器上运行oracle与vs2005开发的网站来回答你。

1、eoms不是数据库,只是数据库实例

你之所以使用pl/sql developer能访问oracle10g,是因为你的机器环境变量在安装时已经被oracle修改了,所以你通过pl/sql developer能访问。

一般oracle的配置文件在:oracle安装上当\NETWORK\ADMIN\tnsnamesora

你可使用记事本打开这个文件,大概内容如下:

EOMS =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oracleservnameorip)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = eoms)

)

)

2、vs2005开发连接oracle的程序

首页,从C:\WINDOWS\MicrosoftNET\Framework\v2050727将SystemDataOracleClientdll拷贝出来,推荐放在开发的项目之下

其次,将SystemDataOracleClientdll引用进入需要 *** 作数据库的相关项目下去

再次,要需要时引用using SystemDataOracleClient;

最后,关于连接对象的编写示例如下:

private static OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=eoms)));User Id=username;Password=userpassword");

public static void Open()

{

if(connState==ConnectionStateClosed) connOpen();

}

public static void Close()

{

if(connState== ConnectionStateOpen) connClose();

}

其它的就不写了,这两步是最重要的,其它的 *** 作与你之前开发过的其它项目中 *** 作数据库是一样的。

以上就是关于怎样从数据库中读取数据生成树全部的内容,包括:怎样从数据库中读取数据生成树、数据库更新语句执行后数据没有更新、C#中如何读取数据库中的某一列值,并将其逐条写入一个数组。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9369110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存