怎么将SQL查询结果存放到数组里面

怎么将SQL查询结果存放到数组里面,第1张

假设mysql中test数据中有个表式score,有数据,我只取第一列的数据出来:

public void mysqlConnection(){

try {

ClassforName("commysqljdbcDriver")newInstance();//数据库驱动

String url = "jdbc:mysql://localhost:3306/test";//数据库链接地址

String user = "root";//用户名

String password = "";//密码

Connection conn = DriverManagergetConnection(url, user, password);//建立connection

Statement stmt = conncreateStatement();

connsetAutoCommit(false);// 更改jdbc事务的默认提交方式

String sql = "select from score";//查询语句

ResultSet rs = stmtexecuteQuery(sql);//得到结果集

conncommit();//事务提交

connsetAutoCommit(true);// 更改jdbc事务的默认提交方式

List<String> list=new ArrayList<String>();//创建取结果的列表,之所以使用列表,不用数组,因为现在还不知道结果有多少,不能确定数组长度,所有先用list接收,然后转为数组

while (rsnext()) {//如果有数据,取第一列添加如list

listadd(rsgetString(1));

}

if(list != null && listsize()>0){//如果list中存入了数据,转化为数组

String[] arr=new String[listsize()];//创建一个和list长度一样的数组

for(int i=0;i<listsize();i++){

arr[i]=listget(i);//数组赋值了。

}

//输出数组

for(int i=0;i<arrlength;i++){

Systemoutprintln(arr[i]);

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

/思路是把数组保存成blob格式

#include <stdioh>

#include <stdlibh>

#include <stringh>

#include "sqlite3h"

/#define DEBUG/

int main(int argc, char argv[]) {

int a[10] = {1,3,8,4,6,6,7,8,9};

int len;

len = sizeof(a[0])10;

#ifdef DEBUG

printf("%d\n",len);

#endif

sqlite3 db;

sqlite3_stmt stmt;

char sql,zErr;

int rc;

rc = sqlite3_open_v2(":memory:",&db,SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE,NULL);

if(rc){

fprintf(stderr,"%s\n",sqlite3_errmsg(db));

return rc;

}

rc = sqlite3_exec(db,"create table if not exists test(array blob);",NULL,NULL,&zErr);

if(rc != SQLITE_OK){

fprintf(stderr,"%s\n",zErr);

sqlite3_free(zErr);

sqlite3_close(db);

return rc;

}

sql = "insert into test values();";

sqlite3_prepare_v2(db,sql,strlen(sql),&stmt,NULL);

sqlite3_bind_blob(stmt,1,a,len,SQLITE_STATIC);

sqlite3_step(stmt);

sqlite3_reset(stmt);

sql = "select from test;";

sqlite3_prepare_v2(db,sql,strlen(sql),&stmt,NULL);

sqlite3_step(stmt);

len = sqlite3_column_bytes(stmt,0);

int data = malloc(len);

memcpy(data,sqlite3_column_blob(stmt,0),len);

sqlite3_finalize(stmt);

sqlite3_close(db);

#ifdef DEBUG

printf("%d\n",sizeof(a[0]));

#endif

int i = 0;

while(i<(len/sizeof(a[0]))){

printf("a=%d, data=%d\n",a[i],(data+i));

i++;

}

system("pause");

return 0;

}

放到数组我不知道为什么这么做,你数据库的类型都是一样吗?要是整型和字符串你可以放一个数组里?

你可以用结果集取出来放到list集合里

反正放到一个容器里就可以了,最好用个泛型

如:User实体类,你先可以封装到populate的方法里

当然方法名你随便取,

String

sql

=

"select

from

t_user";

List

userlist

=

null;

try{

Connection

conn

=

thisgetConnection;

PreparedStatement

pst

=

connPreparedStatement

(sql);

ResultSet

rs

=

pstexecuteQuery();

userlist

=

new

ArrayList

();

while(rsnext()){

User

user

=

new

User();

usersetId(rsgetInt("id"));

usersetCode(rsgetString("code"));

userlistadd(user);

}

thisgetClose(conn,pst,rs);

}catch(Exception

e){

printStackTrace();

}

return

userlist;

我手打的个别打错了你在开发工具里看看

保存字节数组到数据库分两步:

第一、利用FileInputStreamread(byte[])方法把内容读取到byte[]数组中,比如是由二进制数组成的,就可以定义为一个字节数组。

第二、在数据库中对应记录字段应该设置为blob类型,这样就能够顺利保存了

事例代码如下:

PreparedStatement

stmt

=

connectiongeneratePreparedStatement("INSERT

INTO

");

stmtsetBytes(1,

yourByteArray);

其中,yourByteArray是你读出来的字符数组。

无非就几种办法:

多行存储

字符分隔

字符分隔的变化:比如将字符串编码(base64或者其他)或者将字符串中的分隔符编码

以上就是关于怎么将SQL查询结果存放到数组里面全部的内容,包括:怎么将SQL查询结果存放到数组里面、sqlite3数据库怎么存储数组类型、如何将数据库中所有数据存入数组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存