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#中如何读取数据库中的某一列值,并将其逐条写入一个数组。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)