Extjs怎么取出数据库中的内容放到数组中

Extjs怎么取出数据库中的内容放到数组中,第1张

ExtAjaxrequest({

    url : url,

    method : 'GET',

    success : function(resp) {

        var data = Extdecode(respresponseText);

    }

});

朋友,我来告诉你答案!不太清楚你的意思。

据我以前编写类似在线考试的东东,像你描述中的可以当作是多项选择(或单项选择)题型,那么,数据库里可以设计有4个字段

1问题ID

2问题标题

3选项ABCD(这个可以放在一个字段里,也可以分开成4个字段来放)

4问题答案

当用户选择提交答案后,直接比较与问题答案是否相符就可以了。

#ifdef WIN32

#include <windowsh>

#include <odbcinsth>

#include <sqlexth>

#else

#include <mysqlh>

#include <unistdh>

#define SQLHANDLE static MYSQL

#endif

#include <stdargh>

#include <stdlibh>

#include <stdioh>

#include <stringh>

SQLHANDLE hDBEnv, hDBC;

int DB_Open(char dbcn, char usr, char pwd)

{

int r;

#ifdef WIN32

r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);

if(r) return 0;

r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,

(void)SQL_OV_ODBC3,0);

if(r) return 0;

r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);

if(r) return 0;

r = SQLConnect(hDBC,

(unsigned char )dbcn, strlen(dbcn),

(unsigned char )usr, strlen(usr),

(unsigned char )pwd, strlen(pwd));

return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;

#else

mysql_init(&hDBC);

MYSQL rx = mysql_real_connect(

&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);

if(!rx) return 0;

return 1;

#endif

}//end DB_Open

int DB_Exec(char sql)

{

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);

SQLExecDirect(hStatement,(unsigned char )sql, strlen(sql));

SQLCloseCursor(hStatement);

SQLFreeHandle(SQL_HANDLE_STMT, hStatement);

hStatement = NULL;

#else

mysql_real_query (&hDBC, sql, strlen(sql));

#endif

return 1;

}//end DB_Exec

int DB_Close(void)

{

#ifdef WIN32

SQLDisconnect(hDBC);

SQLFreeHandle(SQL_HANDLE_DBC, hDBC);

SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);

#else

mysql_close(&hDBC);

#endif

return 1;

}//DB_Close()

#ifndef WIN32

typedef struct tagMySQLRecordset {

MYSQL_RES hRecord;

void row;

int size;

int cols;

} MYSQLRecordset;

#endif

void DB_CleanQuery(void hRecordset)

{

if(!hRecordset) return;

#ifdef WIN32

__try {

SQLCloseCursor(hRecordset);

SQLFreeHandle(SQL_HANDLE_STMT, hRecordset);

hRecordset = NULL;

}__finally{

return;

}//end try

#else

MYSQLRecordset hRec = (MYSQLRecordset ) hRecordset;

mysql_free_result (hRec->hRecord);

free(hRec->row); hRec->row = NULL;

free(hRec->size); hRec->size = NULL;

free(hRec); hRec = NULL;

#endif

}//end DB_CleanQuery

int DB_Next(void hRecordset)

{

int r=0; if(!hRecordset) return 0;

#ifdef WIN32

r = SQLFetch(hRecordset);

r = r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

DB_CleanQuery(hRecordset);

}//end if

#else

MYSQLRecordset hRec = (MYSQLRecordset ) hRecordset;

MYSQL_ROW row = mysql_fetch_row (hRec->hRecord);

if(row) {

for(int i=0; i<hRec->cols; i++) {

memcpy(hRec->row[i], row[i], hRec->size[i]);

}//next i

r = 1;

}else{

DB_CleanQuery(hRecordset);

r = 0;

}//end if

#endif

return r;

}//end DB_Next

int DB_params_count(const char fmt)

{

int i=0, j=0;

while(fmt[i]) {

if(fmt[i]=='%') j++;

i++;

}//end while

return j;

}//end DB_params_count

void DB_Query(char sql, const char fmt, )

{

int r=0;

int cols = DB_params_count(fmt);

if(cols<1) return NULL;

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);

r = SQLExecDirect(hStatement,(unsigned char )sql, strlen(sql));

r = r==SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

return NULL;

}//end if

#else

r = mysql_real_query (&hDBC, sql, strlen(sql));

if(r) return NULL;

MYSQL_RES rec = NULL;

rec = mysql_store_result (&hDBC);

if(!rec) return NULL;

MYSQLRecordset hStatement

= (MYSQLRecordset )malloc(sizeof(MYSQLRecordset));

if(!hStatement) return NULL;

memset(hStatement, 0, sizeof(MYSQLRecordset));

hStatement->hRecord = rec;

hStatement->cols = cols;

hStatement->row = (void )malloc(cols sizeof(void ));

memset(hStatement->row, 0, cols sizeof(void ));

hStatement->size = (int )malloc(cols sizeof(int));

memset(hStatement->size, 0, cols sizeof(int));

#endif

va_list ap; va_start(ap, fmt);

void var; char buf[32];

int i=0,j=0,k=0,sz=0; char c=0;

int len = strlen(fmt); int bad=1;

#ifdef WIN32

int col=1;

#else

int col=0;

#endif

while(fmt[i]) {

c = fmt[i++];

if(c != '%') continue;

c = fmt[i++];

var = va_arg(ap, void );

if(c == 'd') {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_SLONG, var, 4,NULL);

#else

hStatement->row[col] = var;

hStatement->size[col] = sizeof(long);

#endif

col++;

continue;

}//end if

if(c == 'f') {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_FLOAT, var, 4,NULL);

#else

hStatement->row[col] = var;

hStatement->size[col] = sizeof(float);

#endif

col++;

continue;

}//end if

memset(buf, 0, 32); bad=1;

for(j=i-1; j<len; j++) {

c = fmt[j];

if(c>='0' && c<='9') buf[j-i+1]=c;

if(c=='s') {bad=0; k=j+1; break;}

}//next j

if(bad) return NULL;

sscanf(buf, "%d", &sz);

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_CHAR, var, sz, NULL);

#else

hStatement->row[col] = var;

hStatement->size[col] = sz;

#endif

col++;

i = k;

}//end while

va_end(ap);

return hStatement;

}//end DB_Rec

你可以先用select from user取出全部的数据

然后取得rs的最大记录数(rsrecordcount),然后再随机取出1到最大记录数之间的随机5个数(这步应该很简单,不用解释如何做了吧呵呵),然后使用rsmove(你随机的5个数字之一)就可以分别取出5条记录来这个办法的好处是你的主键id不需要是连续的,而绝大多数表都不是连续的呵呵所以使用Sql语句的where id=随机数字的方法不是很安全

以上就是关于Extjs怎么取出数据库中的内容放到数组中全部的内容,包括:Extjs怎么取出数据库中的内容放到数组中、PHP从数据库取出数组后如何判断一列同数值的个数、如何将数据库的数据读取到数组中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存