从数据库读取数据存入二维数组

从数据库读取数据存入二维数组,第1张

我是提问的人

问题现在修改如下:

下面的程序在编译时是没有错的,在我J2ME客户端访问这个方法时错了

唯一的可能就是把数据存入二维数组时存储不正确了

开了3个帖子,没人能回答正确,小弟真的很急,各位英雄,各位大哥大姐,如果懂的,请帮个忙认真看下好吗

本来想控制台输出察看的,可后来想想客户端没请求,怎么察看,servlet类作为表示层的怎么察看,种种迷惑都很不解

现在数据库的结构是这样的

景区表:scene

字段 id 数字(整型) name 文本

景点表:scenery

字段 id 自动编号 scene 数字(整型) name 文本 其他字段...

现在我要把景区放在一维,景点放在二维

个位帮忙看下,以下数据存储格式哪里错了,或者全错,那能给个方法吗,希望大家帮个忙,我万分感谢!

public Scenery[][] getSceneries()throws ModelException, ApplicationException{

Connection conn=null

Statement stmt=null

ResultSet rs=null

try{

String drname="sun.jdbc.odbc.JdbcOdbcDriver"

Class.forName(drname)

String url="jdbc:odbc:guidesys"

conn=DriverManager.getConnection(url)

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE)

String sql="select * from scene"

rs=stmt.executeQuery(sql)

rs.last()

Scenery[][] sceneries=new Scenery[rs.getRow()][]

rs.beforeFirst()

int i=0

while(rs.next()){

Statement stmts=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)

ResultSet rses=stmts.executeQuery("select * from scenery where scenery.scene="+rs.getInt(1)+"")

rses.last()

sceneries[i]=new Scenery[rses.getRow()]

rses.beforeFirst()

int j=0

while(rses.next()){

System.out.println(rses.getString(3))

sceneries[i][j]=new Scenery(rs.getString(2),rses.getString(3),rses.getString(4),rses.getString(5),rses.getString(6),rses.getString(7))

j++

}

rses.close()

stmts.close()

i++

}

rs.close()

stmt.close()

conn.close()

return sceneries

}catch(Exception e){

throw new ModelException(ModelException.CAUSE_SNACKS_NOT_FIND)

}

}

1、使用双层循环语句,就可以依次把数据顺序读入到一个二维数组当中了。

2、例程:

#include <stdio.h>

#include <string.h>

#define MAXLINE 3

#define MAXCOLUMN 10

void main(void){

FILE *fp//文件指针

char arr[MAXLINE][MAXCOLUMN]={0} //定义3行10列的二维数组并初始化

int i = -1

if((fp=fopen("./test/filename.txt","r"))==NULL){ //打开txt文件

perror("File open error!\n")

return

}

while((fgets(arr[++i],MAXCOLUMN+1,fp))!=NULL) //读取一行并存到arr数组

printf("%d: ",i)//打印行号

//puts(arr[i])

char *subarr = strtok(arr[i]," ") //以空格为分隔符从arr[i]中获得字串

while(subarr!=NULL){

data[i][j] = atoi(subarr) //将字串转为int型数据存入data数组

printf("%d\t",data[i][j]) //打印data[i][j

subarr = strtok(NULL," ") //继续获得arr[i]中的字串

j++ //data数组列加一

}

printf("\n")

}

//循环完毕后,所有数据已在data数组中

printf("\n")

fclose(fp) //关闭指针


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

原文地址: https://outofmemory.cn/sjk/9886172.html

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

发表评论

登录后才能评论

评论列表(0条)

保存