新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > C语言与嵌入式SQL混合编程及图像处理技术

C语言与嵌入式SQL混合编程及图像处理技术

作者:时间:2012-12-13来源:网络收藏

//往表中写入图像信息

EXEC DECLARE @@tmp_data varbinary(16)

EXEC SELECT @@tmp_data = TEXTPTR(photo)

FROM teacher WHERE sno= '1001 '

EXEC WRITETEXT teacher.photo @@tmp_data:*fileout

//:*fileout图像文件转为十六进制文件指针

……

EXEC SQL COMMIT ;

EXEC SQL DISCONNECT ALL;}

2.2 SQL Server 2005图像存储实现方法[4]

SQL Server 2005 的 OPENROWSET 函数能够一次完成远程数据的连接与存取。可以在 SELECT 语句的 FROM 子句中使用 OPENROWSET 函数,也可以在 INSERT、UPDATE 或 DELETE 语句中把 OPENROWSET 函数当成目标数据表来使用。值得一提的是,SQL Server 2005在OPENROWSET函数中加入了BULK数据列集, 这样可以直接从文字文件、xml 文件以及图像等文件中读取数据。这就意味着可以在一条非常简单的 INSERT INTO…SELECT 语句中使用OPENROWSET函数将内含大量数据的文件内容存入数据表的对应字段(如简历、图像等)中。OPENROWSET BULK选项自变量可以精确控制数据读取的开始与结束位置、如何处理错误以及数据的解释,例如将数据文件读取成 varbinary、varchar 或 nvarchar 类型的字段的数据列集。以下是一个C与SQL Server 2005的的实例,程序给出的是解决这一问题的核心部分。

Demo2.sqc

#include

#include

EXEC SQL BEGIN DECLARE SECTION;

char sno[10],sname[10];int ssex;

EXEC SQL END DECLARE SECTION ;

EXEC SQL INCLUDE USERCA;

viod imagetech ()

{ EXEC SQL CONNECT TO Server:mydb USER sa.sa;

EXEC SQL CREATE TABLE Teacher

(sno char(9), sname char(20), ssex int,

resume nvarchar(max),

//创建可输入大数据块文本的简历字段

photo image);

printf( input sno: ); scanf( %s,sno);

printf( input sname: ); scanf( %s,sname);

printf( input?ssex: ); scanf( %d,ssex);

EXEC SQL INSERT INTO Teacher(sno,sname,ssex,resume,

photo)

SELECT :sno, :sname, :ssex,

WSET(BULK ’C:resume1.txt’, SINGLE_NCLOB),

OPENROWSET(BULK ’C:photo1.jpg’, SINGLE_BLOB);

//一种大数据块及图像存储的解决方案

EXEC SQL COMMIT TRANSACTION;

EXEC SQL DISCONNECT ALL;

}

2.3 预编译

C编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。经过SQL的预编译之后,原有的SQL会被转换成一系列函数调用。因此,系统还提供一些列函数库,以确保能够把代码中的函数调用与对应的实现链接起来。SQL Server的预处理程序是nsqlprep.exe。通过在操作系统命令窗口运行命令cd c:program filesMicrosoft SQL ServerMSSQLBinn,进入到Binn文件夹,调用预编译程序nsqlprep.exe程序,执行nsqlprep Demo2,如果成功就会将Demo2.sqc文件预编译成Demo2.c。接着运行主编译程序VC++,打开Demo2.c进行编译,VC++会提示要建立工程,点击“是”建立工程文件。还需在工程/设置/link中的对象/库模块中添加SQLakw32.lib和Caw32.lib才能够正确链接,最后生成目标程序和可执行文件。

当一个程序既要访问数据库,又要处理数据时,把SQL语言嵌入到宿主语言中,将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合是解决该问题的有效途径。作为一种信息表达手段已被人们所熟悉,在数据库信息管理系统的开发中[5]需要用到图像等数据时,将有关信息与指定的图像对应,无疑对图像数据处理的科研、生产和管理等部门有着重要的实用参考价值。因此,在嵌入式SQL中用数据库管理系统的预编译器,无限利用高级语言通过数据库管理系统的接口存取和检索数据,来提高对数据库操作的效率提高。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

c语言相关文章:c语言教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭