三九宝宝网宝宝教育教学论文

C语言中使用嵌入式sql

03月08日 编辑 39baobao.com

[请问如何自学嵌入式如何学习嵌入式c语言]嵌入式比单片机高级的多,因为它的上面可以安装操作系统,来实现更加复杂的操作。 嵌入式的概念也很大,包含的许多东西,尤其到了软件这块,分支很多,比如工业控制、图形、网络、手机...+阅读

嵌入式SQL程序的VC+SQL server 2000实现的环境配置 嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:

1、环境初始化;

2、预编译;

3、编译;

4、连接;

5、运行。下面就其中重要的的操作方法给以详细说明。

1、环境初始化

(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件);如果操作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。) ( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。 (3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。 ( 4) VC++6.0环境配置。具体配置分为如下三步[: ①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。 ②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。 ③project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。

2、预编译 C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。 Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器. 预编译程序nsqlprep的常用语法为: nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password 其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)#includevoid main() { EXEC SQL BEGIN DECLARE SECTION; char first_name[40]; char last_name[]="White"; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO hushaobo.pubs USER sa.1982; EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name; EXEC SQL DISCONNECT ALL; printf("first name: %s \n",first_name); } 在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982 则生成demo.c,将该文件添加到VC工程中编译即可。

3、编译,连接与运行 在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11;尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下: 方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。 方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值;新路径与已有路径间用;间隔。注意调适程序时,文件名中不要包含cursor,否则可能会出错。

在c中嵌入sql

//这个是手工添加的函数

void OpenDatabase()

{

QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");

db.setDatabaseName(QString("DRIVER={SQL SERVER};"

"SERVER=%1;" //服务器名称

"DATABASE=%2;"//数据库名

"UID=%3;" //登录名

"PWD=%4;" //密码

).arg("192.168.1.252")

.arg("数据库名")

.arg("登录名")

.arg("密码")

);

if (!db.open())

{

QMessageBox::critical(0, qApp->tr("Cannot open database"),

db.lastError().databaseText(), QMessageBox::Cancel);

}

}

用VC怎么连接SQL数据库

(1).在文件stdafx.h中最后一个#endif的前一行写入 #import "C:\program files\common files\System\ado\msado15.dll" no_namespace \ rename("EOF","EndOfFile") \ rename("LockTypeEnum","newLockTypeEnum")\ rename("DataTypeEnum","newDataTypeEnum")\ rename("FieldAttributeEnum","newFieldAttributeEnum")\ rename("EditModeEnum","newEditModeEnum")\ rename("RecordStatusEnum","newRecordStatusEnum")\ rename("ParameterDirectionEnum","newParameterDirectionEnum") 如果你的系统不是安装在C盘的话就把#import 后面的C改成系统所有的盘 (2).在C***App类的 public:下加入 _RecordsetPtr m_pADOSet; bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL); 在private:下加入_ConnectionPtr ADOConn; 在class C***App : public CWinApp { ... };之后#endif之前加入extern C***App theApp;(3)在BOOL C***App::InitInstance()函数中Enable3dControls(); // Call this when linking to MFC statically这一行下面加入 if( FAILED(::CoInitialize(NULL)) ) { AfxMessageBox("ADO Init failed"); return false; } try { ADOConn.CreateInstance(__uuidof(Connection)); ADOConn->Open("DSN=OBDC数据源;Provider=MSDASQL","用户","密码", adConnectUnspecified);//这一行要自已修改 } catch(_com_error &e) { CString err; err.Format("%s", (char*)(e.Description()) ); AfxMessageBox(err); } catch(...) { AfxMessageBox("Unknown Error..."); } m_pADOSet.CreateInstance(__uuidof(Recordset)); 并在文件最后加上如下代码: bool C***App::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) { if ( ADOSet->State == adStateOpen) ADOSet->Close(); try { ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown); return true; } catch(_com_error &e) { CString err; err.Format("ADO Error: %s",(char*)e.Description()); AfxMessageBox(err); return false; } } 最后就可以在登录时执行SQL语句了,比如用户为CString strUser, 密码是CString strPwd;数据库表是user_table(user_id, user_name, user_pwd)则 _variant_t strQuery, Holder; strQuery = "select * from user_table where user_name='"+strUser +"' and user_pwd='"+ strPwd +"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("密码错误"), MB_ICONEXCLAMATION); return; } else { AfxMessageBox(_T("登录成功"), MB_ICONEXCLAMATION); }

如何在vc中用SQL存储数据最好有实例

以下代码不符合你的意思吗?应该差不多吧。连接->;插入数据->;提交数据->;断开连接。这用了事物回滚,你不会想要直接插入到数据库中的代码吧?那就连接后直接: strSQL.Format("insert into DATA values(%d, %d, %d)", pData->x, pData->y, pData->z); m_Database->ExecuteSQL(strSQL); 就可以了! //表名叫DATA typedef struct { int x; int y; int z; }FLOW_DATA; CDataBase m_Database; //方法 //连接 /*str格式为:"DSN=%s;UID=%s;PWD=%s"。第一个%s表示要连接的数据源名称;第二个%s表示用户名;第三个%s表示密码*/ int SetConnection(CString str) { m_Database.SetLoginTimeout(3); //连接超时属性 try { if(m_Database.IsOpen()) { m_Database.Close(); } m_Database.OpenEx(str, CDatabase::openReadOnly | CDatabase::noOdbcDialog); } catch(...) { return -1; } return 1; } //断开 int CloseConnect() { try { if(m_Database.IsOpen()) m_Database.Close(); } catch(...) { return -1; } return 1; } /* 函数: SetExectue 功能: 向表中插入记录 输入参数:FLOW_DATA* pData: 一个包含数据信息的结构 返回值: int类型。

1:表示向表中插入记录成功 -1:表示和数据源已经断开连接 -2:表示向表中插入记录失败 */ int SetExectue(FLOW_DATA* pData) { if(!m_Database->IsOpen()) { return -1; } try { strSQL.Format("insert into DATA values(%d, %d, %d)", pData->x, pData->y, pData->z); m_Database->ExecuteSQL(strSQL); return 1; } catch(...) { m_Database->Rollback(); m_Database->BeginTrans(); return -2; } return 1; } /* 函数: Commit 功能: 提交要插入的数据 返回值: BOOL类型。 TRUE:表示提交成功 FALSE:表示提交失败 */ BOOL Commit() { try { m_Database->CommitTrans(); m_Database->BeginTrans(); } catch(...) { m_Database->Rollback(); m_Database->BeginTrans(); return FALSE; } return TRUE; }

以下为关联文档:

C语言嵌入式C刚开始学的时候,学习用汇编程序写你会对硬件的理解更深些, 当你对硬件比较熟悉的时候,编写这些程序就简单了。你再用C语言写这些程序的时候就会发现用C写的程序是多么的简单,简...

VS2005中使用C语言连接SQL数据库然后实现插入数据的方法try { String commandText="select count(*) from users"; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(local);Initial Catalog=class...

如何自学Linux下C语言嵌入式编程开发板用友善之臂的吧 mini2440 连3.5寸屏500块钱的样子 有好几张DVD学习光盘 这款口碑比较高 嵌入式Linux操作系统学习规划 ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应...

如何把汇编程序嵌入到C语言中不同编译器嵌入汇编的方式不一样,具体如下: 一、Turbo C , 也就是所说的TC。 1、使用预处理程序的伪指令#asm和#endasm,#asm用来开始一个汇编程序块,而#endasm指令用于该块的结...

在c语言C或G中如何嵌入汇编今天有点时间,重新改下了下,为避免因编译器和平台实现而出现的问题,我写了三个版本,分别是windows下vc6.0,windows下mingw和cygwin和linux下的gcc/g++。vc6.0:#includeconst cha...

如何在C语言中嵌入汇编在 Visual C++ 中使用内联汇编- - 使用内联汇编可以在 C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和连接步骤。在 Visual C++ 中,内联汇编是内置的编译器,因此不需要...

单片机 C语言嵌入式技术有什么关系为了让你更容易理解,我就讲得直白一些了。 单片机,就是一个可编程的控制芯片,内部集合了很多数字门电路,可以通过编程,对外部输出信号,实现控制外部电路的目的; C语言,就是一门早前...

请问如何自学嵌入式?如何学习嵌入式c语言嵌入式比单片机高级的多,因为它的上面可以安装操作系统,来实现更加复杂的操作。 嵌入式的概念也很大,包含的许多东西,尤其到了软件这块,分支很多,比如工业控制、图形、网络、手机...

surf算法C语言编写要做嵌入式开发不要C和基于OPENCV的surf算法C语言编写要做嵌入式开发不要C和基于OPENCV的,计算图像相似度的算法有哪些:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31...

推荐阅读
图文推荐