从数据库读取数据训练神经网络

来源:互联网 发布:linux终端输入密码 编辑:程序博客网 时间:2024/06/05 08:21

由于数据列太多(504列),无法加载到txt和excel中,而且操作起来不方便,因此这里直接从数据库中加载数据

另外,对于数据库中一些连接和操作的语句,这里也记录下来,以后用起来方便些。就不用去代码中找了。

1、连接数据库

在此之前,需要用odbc配置数据源,建立数据库,配置数据源即可。


CDataBase* m_pDataBase; //定义
m_pDataBase=new CDatabase(); //构造函数中
m_pDataBase->Close();//析构函数中<span style="white-space:pre"></span>delete m_pDataBase;
#include "afxdb.h"  --数据库头文件不要忘记
BOOL CChangeIdeaApp::PrepareDataBase(){BOOL bRet;TRY{bRet=m_pDataBase->Open(NULL,FALSE,FALSE,_T("ODBC;DSN=ZKDB"));//;UID=sa;PWD=psdmaes}CATCH_ALL(e){char MsgError[255];e->GetErrorMessage(MsgError,255);AfxMessageBox(MsgError);delete m_pDataBase;return FALSE;}END_CATCH_ALLif(!bRet){AfxMessageBox(_T("连接失败!"));        delete m_pDataBase;return FALSE;}}
这个例子是以前做的一个利用字库做idea的,这里重新拿出来

2、读取数据

这里是一个读取字库中记录的小程序,这里有一些随机读取的功能,可以用来做一般的模板使用

int row=GetProfileInt("字库","行数",2358);int col=GetProfileInt("字库","列数",10);CString OutContent="";srand((int)time(0));for(int i=0;i<4;i++){int r=rand()%row;//随机取行和列int c=rand()%col;char GetName[100];SDWORD cbName;c++;c++;char ss[1024];HSTMT hStmt;RETCODE retcode;sprintf(ss,"select * from ZkTable where ROW=%d",r);if(SQLAllocStmt(m_pDataBase->m_hdbc,&hStmt)!=SQL_SUCCESS) {AfxMessageBox("SQLAllocStmt error !",MB_OK);return FALSE;}retcode = SQLExecDirect(hStmt, (unsigned char *)ss, SQL_NTS); if((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)) {SQLFreeStmt(hStmt,SQL_DROP);AfxMessageBox("SQLExecDirect Error",MB_OK);return FALSE;}while(retcode==SQL_SUCCESS){ retcode = SQLFetch(hStmt); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){SQLGetData(hStmt, c, SQL_C_CHAR, &GetName[0], 256, &cbName); //c为第c列,从1开始,一些其他的格式见下表1OutContent+=GetName;break;}}SQLFreeStmt(hStmt,SQL_DROP);}RecordContent=OutContent;

 

经过改进,完整的从数据库中读取数据成为矩阵的代码如下

功能:从数据库中读取50行数据,共504列到矩阵中。

对于这种矩阵类,我觉得还是很好用的,我应该掌握它。并让它成为自己的程序。

bool CMatrix::LoadDataFromBase(){CNNBPApp* pApp = (CNNBPApp*)AfxGetApp();//设置矩阵的行列m_nRow =50;SetMatrixRowNumber(m_nRow);m_nCol =504;SetMatrixColNumber(m_nCol);double GetValue;SDWORD cbName;char ss[1024];CString OutContent="";HSTMT hStmt;RETCODE retcode;sprintf(ss,"select * from aatest");if(SQLAllocStmt(pApp->m_pDataBase->m_hdbc,&hStmt)!=SQL_SUCCESS) {AfxMessageBox("SQLAllocStmt error !",MB_OK);return FALSE;}retcode = SQLExecDirect(hStmt, (unsigned char *)ss, SQL_NTS); if((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)) {SQLFreeStmt(hStmt,SQL_DROP);AfxMessageBox("SQLExecDirect Error",MB_OK);return FALSE;}int i=0;while(retcode==SQL_SUCCESS){ retcode = SQLFetch(hStmt); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){for(int j=1;j<=504;j++){SQLGetData(hStmt, j, SQL_C_DOUBLE, &GetValue, 256, &cbName); m_pTMatrix [i][j-1] = GetValue;}}i++;if(i>=50)break;}SQLFreeStmt(hStmt,SQL_DROP);}

这里贴出来,以后找起来就方便了。

表1 格式大全来源http://www.cnblogs.com/zhenjing/ 

SQL类型

C类型

bit

SQL_BIT

SQL_C_BIT

tinyint

SQL_TINYINT

SQL_C_STINYINT

tinyint unsigned

SQL_TINYINT

SQL_C_UTINYINT

bigint

SQL_BIGINT

SQL_C_SBIGINT

bigint unsigned

SQL_BIGINT

SQL_C_UBIGINT

long varbinary

SQL_LONGVARBINARY

SQL_C_BINARY

blob

SQL_LONGVARBINARY

SQL_C_BINARY

longblob

SQL_LONGVARBINARY

SQL_C_BINARY

tinyblob

SQL_LONGVARBINARY

SQL_C_BINARY

mediumblob

SQL_LONGVARBINARY

SQL_C_BINARY

long varchar

SQL_LONGVARCHAR

SQL_C_CHAR

text

SQL_LONGVARCHAR

SQL_C_CHAR

mediumtext

SQL_LONGVARCHAR

SQL_C_CHAR

char

SQL_CHAR

SQL_C_CHAR

numeric

SQL_NUMERIC

SQL_C_CHAR

decimal

SQL_DECIMAL

SQL_C_CHAR

integer

SQL_INTEGER

SQL_C_SLONG

integer unsigned

SQL_INTEGER

SQL_C_ULONG

int

SQL_INTEGER

SQL_C_SLONG

int unsigned

SQL_INTEGER

SQL_C_ULONG

mediumint

SQL_INTEGER

SQL_C_SLONG

mediumint unsigned

SQL_INTEGER

SQL_C_ULONG

smallint

SQL_SMALLINT

SQL_C_SSHORT

smallint unsigned

SQL_SMALLINT

SQL_C_USHORT

real

SQL_FLOAT

SQL_C_DOUBLE

double

SQL_FLOAT

SQL_C_DOUBLE

float

SQL_REAL

SQL_C_FLOAT

double precision

SQL_DOUBLE

SQL_C_DOUBLE

date

SQL_DATE

SQL_C_DATE

time

SQL_TIME

SQL_C_TIME

year

SQL_SMALLINT

SQL_C_SHORT

datetime

SQL_TIMESTAMP

SQL_C_TIMESTAMP

timestamp

SQL_TIMESTAMP

SQL_C_TIMESTAMP

text

SQL_VARCHAR

SQL_C_CHAR

varchar

SQL_VARCHAR

SQL_C_CHAR

enum

SQL_VARCHAR

SQL_C_CHAR

set

SQL_VARCHAR

SQL_C_CHAR

bit

SQL_CHAR

SQL_C_CHAR

bool

SQL_CHAR

SQL_C_CHAR


0 0
原创粉丝点击