微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C语言与嵌入式SQL混合编程及图像处理技术

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

时间:11-12 来源:3721RD 点击:

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 <stdio.h>
  #include <stdlib.h>
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 files\Microsoft SQL Server\MSSQL\Binn,进入到Binn文件夹,调用预编译程序nsqlprep.exe程序,执行nsqlprep Demo2,如果成功就会将Demo2.sqc文件预编译成Demo2.c。接着运行主语言编译程序VC++,打开Demo2.c进行编译,VC++会提示要建立工程,点击"是"建立工程文件。还需在工程/设置/link中的对象/库模块中添加SQLakw32.lib和Caw32.lib才能够正确链接,最后生成目标程序和可执行文件。

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top