假设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数据库怎么存储数组类型、如何将数据库中所有数据存入数组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)