sqlprepare
A. VC中嵌入sql
VC++中无法直接嵌入SQL。某些数据库产品提供在C语言中嵌入SQL的工具(如Oracle的Pro*C),这些工具一般是对嵌入SQL的VC++代码进行预编译,生成符合C++语法规则的代码再交给C++编译器进行编译。
对于你的情况,你需要决定采用哪种数据库和连接方式。VC++支持DAO、ODBC、ADO等多种连接方式,自身支持Access等数据库,也可以通过前面的几种连接方式连接大型数据库。不管哪种方式,一般都是先建立数据集,然后调用数据集的某个方法来执行SQL语句。例如:
CDatabase db;
db.OpenEx(_T("DSN=Pubs;UID=sa;PWD=;"));
CRecordset rs(db);
rs.Open( CRecordset::dynaset,
_T( "Select L_Name from Customer" ) );
===解答2====
这个问题,我不知道你的基础有多少,大体说一下,你先编一个文件,名叫ODBCTest.c
在VC++6.0中新建一个Win32 Console Application的项目,并将项目命名为ODBCTest.
然后,将已经写好的ODBCTest.c文件加入到该项目的Source Files中,编译并且执行.执行完成后,SQL Server中Student表的数据即为Kingbase中Student表的数据备份.
实验源代码.以下源码,给出了一些注释,供参考.
#include
#include
#include
#include
#include
#include
#define SNO_LEN 30
#define NAME_LEN 50
#define DEPART_LEN 100
#define SSEX_LEN 5
int main()
{
/* Step 1 定义句柄和变量 */
//以king开头的表示的是连接KINGBASEES的变量
//以server开头的表示的是连接SQLSERVER的变量
SQLHENV kinghenv, serverhenv; //环境句柄
SQLHDBC kinghdbc,serverhdbc; //连接句柄
SQLHSTMT kinghstmt,serverhstmt; //语句句柄
SQLRETURN ret;
SQLCHAR sName[NAME_LEN], sDepart[DEPART_LEN],sSex[SSEX_LEN],sSno[SNO_LEN];
SQLINTEGER sAge;
SQLINTEGER cbAge = 0, cbSno = SQL_NTS, cbSex = SQL_NTS,cbName = SQL_NTS,cbDepart = SQL_NTS;
/* Step 2 初始化环境 */
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &kinghenv);
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &serverhenv);
ret = SQLSetEnvAttr(kinghenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
ret = SQLSetEnvAttr(serverhenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
/* Step 3 :建立连接 */
ret = SQLAllocHandle(SQL_HANDLE_DBC, kinghenv, &kinghdbc);
ret = SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);
ret = SQLConnect(kinghdbc,
"KingbaseES ODBC",SQL_NTS,
"SYSTEM",SQL_NTS,
"MANAGER",SQL_NTS);
if (!SQL_SUCCEEDED(ret)) //连接失败时返回错误值
return -1;
ret = SQLConnect(serverhdbc,
"SQLServer",SQL_NTS,
"sa",SQL_NTS,
"sa",SQL_NTS);
if (!SQL_SUCCEEDED(ret)) //连接失败时返回错误值
return -1;
/* Step 4 :初始化语句句柄 */
ret = SQLAllocHandle(SQL_HANDLE_STMT, kinghdbc, &kinghstmt);
ret = SQLSetStmtAttr(kinghstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTEGER );
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
/* Step 5 :两种方式执行语句 */
/* 预编译带有参数的语句 */
ret = SQLPrepare(serverhstmt,"INSERT INTO STUDENT (SNO,SNAME,SSEX,SAGE,SDEPT) VALUES ( , , , , )", SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
ret = SQLBindParameter(serverhstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_CHAR, SNO_LEN, 0, sSno, 0, &cbSno);
ret = SQLBindParameter(serverhstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_CHAR, NAME_LEN, 0, sName, 0, &cbName);
ret = SQLBindParameter(serverhstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_CHAR, 2, 0, sSex, 0, &cbSex);
ret = SQLBindParameter(serverhstmt, 4, SQL_PARAM_INPUT, SQL_C_LONG,SQL_INTEGER, 0, 0, &sAge, 0, &cbAge);
ret = SQLBindParameter(serverhstmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR,SQL_CHAR, DEPART_LEN, 0, sDepart, 0, &cbDepart);
}
/*执行SQL语句*/
ret = SQLExecDirect(kinghstmt,"SELECT * FROM STUDENT",SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
ret = SQLBindCol(kinghstmt, 1, SQL_C_CHAR,sSno,SNO_LEN, &cbSno);
ret = SQLBindCol(kinghstmt, 2, SQL_C_CHAR, sName, NAME_LEN, &cbName);
ret = SQLBindCol(kinghstmt, 3, SQL_C_CHAR, sSex, SSEX_LEN, &cbSex);
ret = SQLBindCol(kinghstmt, 4, SQL_C_LONG, &sAge, 0, &cbAge);
ret = SQLBindCol(kinghstmt, 5, SQL_C_CHAR, sDepart, DEPART_LEN, &cbDepart);
}
B. SQL Server提示错误could not be prepared,可能是由什么原因引起的,具体错误信息请参考截图。
这个错误应该是ODBC报的错误,原因有很多,你要逐一检查
1、你的操作系统是64位的,可能你是在32位的ODBC里创建的数据源,当然,反之也是有可能的
2、原来的ODBC数据源创建是成功的,可能由于SQL服务未正常启动、SQL的用户密码变更等错误,造成你无法再次连接到SQL
3、建议你多看系统日志,关于ODBC和SQL的错误,就能发现具体的问题
具体问题具体分析,你给出的只是表层的一个提示,无法给你更多的解决办法
C. 用VB6.0做程序,遇到问题求解
使用一个字符串,再执行SQL。
参考帮助
运行动作查询或执行 SQL 语句,它们都不返回行。
语法
connection.Execute source[, options]
query.Execute [options]
Execute 方法的语法有下列部分:
部分
描述
connection
对象表达式,其值是查询将运行的 rdoConnection 对象。
query
为 rdoQuery 对象求值的对象表达式,其中
rdoQuery 对象的 SQL 属性设置为指定的 SQL 语句将要执行。
source
字符串表达式,含有要执行的动作查询或 rdoQuery 的名字。
options
Variant
或常数,确定查询如何运行,设置值如下面所述。
设置值
可以为 options
参数可使用下列常数:
常数
值
描述
rdAsyncEnable
32
异步地执行操作。
rdExecDirect
64
(缺省)不创建保存过程而执行查询。使用 SQLExecDirect 代替 SQLPrepare 和
SQLExecute。
说明
推荐只对动作查询使用 Execute 方法。因为动作查询不返回任何行,所以
Execute 不返回 rdoResultse。可以对执行多语句的查询使用 Execute
方法,这些批语句都不能返回行。为了执行组合操作和 SELECT 查询的多结果集查询,使用 OpenResultset 方法。
使用 rdoConnection 或 rdoQuery 对象的
RowsAffected 属性,确定受最新 Execute 方法影响的行数。RowsAffected
含有当执行动作查询时所删除的、更新的、或插入的行数。当使用 Execute 方法运行一个 rdoQuery 时,该
rdoQuery 对象的 RowsAffected 属性就被设为受影响的行数。
选项
为了异步地执行查询,可使用 rdAsyncEnable 选项(它被缺省设置)。如果设置了该选项,数据源查询处理器立即开始查询,且在该查询完成之前就返回应用程序。使用
StillExecuting 属性确定查询处理器何时准备从查询返回结果。使用 Cancel
方法中止异步查询的处理。
为了不建立临时的保存过程就执行查询,使用 rdExecDirect
选项。当查询含有对事务、或对只存在于单个操作的上下文的临时表的引用时,需要这个选项。例如,如果查询或引用临时表中含有 Begin Transaction
TSQL 语句,则必须使用 rdExecDirect 以确保当结束查询挂起这些对象时,远程引擎不拒绝。
建议不要使用 Execute
方法执行保存过程,因为过程的返回值及输出参数会被,并且过程也不能返回行。对 rdoQuery 使用 OpenResultset
方法执行存储过程。
注意 当执行不需要参数的保存过程时,不要在 SQL 语句中包含括号。例如,执行 "MySP"
过程,使用下列语法:{ Call MySP }。
同样,与下列类似的调用:
rCn.Execute SqlStatement, rdAsyncEnable +
rdExecDirect
仅允许一个未完成请求并允许 Visual Basic 代码与 SQL Server 过程重叠,但是不允许多个未完成 SQL
Server 请求。
D. C语言如何连接Access数据库
看视频上是连接MySQL数据库,MySQL安装后配置比较麻烦,所以我试着用老师给的模板连接Access数据库,Access是比较方便使用的 只要装了office几乎都有. 首先在网络搜索odbc 连接字符串 找到的是asp连接Access的方法,但是ODBC是通用的,所以直接拿过来也能用. 将 SQLCHAR ConnStrIn[MAXBUFLEN] = “DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=test;CharSet=gbk;”; 部分改成 SQLCHAR ConnStrIn[MAXBUFLEN] = “Driver={Microsoft Access Driver (*.mdb)};Dbq=//mydatabase.mdb;Uid=Admin;Pwd=;CharSet=gbk;”; Dbq指的是你的数据库所在路劲 当然之前你应该在c:/下新建一个数据库名为mydatabase.mdb,而且如果后面的SQL操作语句是老师写的 result = SQLPrepare(hstmt,(SQLCHAR*)“insert into T_Person(FAge,FName) values(20,'kider')”,SQL_NTS); 那么你也要在之前建立好一个表T_Person,和表中的两个字段FAge,FName.否则会出错. 怎么样,已经成功链接到Access了吧,接下来你就可以发扬广大了,做个管理系统之类的东东.!
E. c程序插入数据到SQL server2008失败
没有正常安装 ADO.NET Data Services 3.5 SP1
一般来说,如果你的SQL安装盘光是正规的,起动后会让你先安装SQL的预装环境,猜想,你安装的不是一个完整版。
你可以试着先找到 .net 3.5 sp1,安装后再安装你的SQL Server 2008,或是另行下载一个完整版的SQL Server 2008再试试。
请网络搜索 “SQL server 2008 R2 MSDN”后下载。
如是个人版操作系统,请搜索下载 “SQL server 2008 R2 Express”。
F. 发送数据库命令失败
是不是已经执行过一次了,刷新一下数据库,把test表删了
G. 如何编写高性能 CLI 程序的简要分析
可提高 CLI 程序性能的一些技术及实例分析
实例的测试环境
本文中,所有实例都是在以下的环境中测试并得出结论的:Client 与 server 在不同的物理主机上,它们之间通过 1000M 的以太网相连。
不同环境下,测试得到的各个指标的绝对值可能会有所不同,但是我们关注的只是程序优化前后执行所需时间的一个对比,所以只要程序优化前后测试的环境是一样的,测试得到的结果就是有意义的。
各指标的测试结果均为多次测量求平均值。
分离 SQL 语句的 Prepare 与 execute
CLI 提供了两种执行 SQL 语句的方法:SQLPrepare() 与 SQLExecute() 顺序的分步执行;使用 SQLExecDirect() 来直接预处理以及执行一个 SQL 语句。
在编写代码的时候,使用 SQLExecDirect() 会使代码显得更简洁和容易操作,但是程序的执行效率也会受到影响。
将 SQL 语句的预处理与执行分别在不同的步骤中完成,当需要再次执行这个 SQL 语句的时候,可以省略 prepare 过程而直接执行。这会在两个方面使性能得到提高:减少网络上请求 - 应答的交互次数以及网络中的数据流量;减少 server 端的数据处理量。
下面这段程序展示了如何使用 SQLPrepare() 与 SQLExecute() 来向表中插入数据,插入的行数由 recordNum来确定。
从上图来看,Array size 设置的越大,执行相同的任务需要的时间也就越少,但是,这并不表明 Array size 设置的越大越好。从上图分析发现,Array size 从 10 提高的 50,执行时间几乎减少了一倍(14 秒);但是,把 Array size 从 200 提高到 500 时,执行时间只是减少了 20% (约 3 秒)。Array size 的设置还受内存的限制,此值设置的越大,就会占用更多的内存。所以在实际的应用中,应该根据实际的环境来调节 Array size,来达到资源的使用和效率的一个平衡。
CLI 中还有一种技术类似于 Array 操作,即 Compound SQL, 它的原理是将一系列的 SQL 同时发送到数据库的 server 端执行,只返回最后的结果。这种技术在性能上的提高得益于减少了网络流量,其实每一条 SQL 语句还是独立执行的。Compound SQL 性能比普通执行 SQL 语句要好,但是比 SQL 语句的 Array 操作性能要低。
使用文件绑定来提高 LOB 操作的性能
LOB 是一种广泛使用的数据类型,这种数据类型用来存储大块的数据,其上限为 2GB。如果一个应用程序需要将整个文件的内容作为表中一个类型为 LOB 的列的值,在将向本列插入数据的时候,最直接的方式就是将文件中的内容分片的读出、发送给数据库;然而,我们还有一种更有效率的方法,即将这个文件直接绑定到 SQL 语句的 parameter 上。
下面我们分别测试分析这两种方法的效率,并且分析为什么直接绑定文件到参数上会有性能的提升。
H. visual foxpro 6.0
visual foxpro数据库函数
adatabases() 将所有打开数据库的名称和路径放到内存变量数组中
adbobjects() 把当前数据库中的命名连接名、关系名、表名或sql视图名放到一个内存变量数组中
afields() 把当前表的结构信息存放在一个数组中,并且返回表的字段数
alias() 返回当前表或指定工作区衰的别名
asessions() 创建一个已存在的数据工作期id数组
ataginfo() 创建一个包含索引和键表达式的名字、数量和类型信息的数组
aused() 将一个数据工作期中的表别名和工作区存入内存变量数组
bof() 确定当前记录指针是否在表头
candidate() 判断索引是否为候选索引
cdx() 根据指定的索引位置编号,返回打开的复合索引(.cdx)文件名称
cpdbp() 返回一个打开表所使用的代码页
createoffline() 由已存在的视图创建一个游离视图
cursorgetprop() 返回visualfoxpro表或临时表的当前属性设置
cursorsetprop() 指定visualfoxpro表或临时表的属性设置
cursortoxml() 转换visualfoxpro临时表为xml文本
curval() 从磁盘上的表或远程数据源中直接返回字段值
dbc() 返回当前数据库的名称和路径
dbf() 返回指定工作区中打开的表名,或根据表别名返回表名
dbsetprop() 给当前数据库或当前数据库中的字段、命名连接、表或视图设置一个属性
deleted() 返回一个表明当前记录是否标有删除标记的逻辑值
descending() 是否用descending关键字创建了一个索引标识
dropoffline() 放弃对游离视图的所有修改,并把游离视图放回到数据库中
eof() 确定记录指针位置是否超出当前表或指定表中的最后一个记录
fcount() 返回衰中的字段数目
field() 根据编号返回表中的字段名
filter() 返回setfilter命令中指定的表筛选表达式
fldlist() 对于setmelds命令指定的字段列表,返回其中的字段和计算结果字段表达式
flock() 尝试锁定当前表或指定表
for() 返回一个己打开的单项索引文件或索引标识的索引筛选表达式
found() 如果continue、find、locate或seek命令执行成功,函数的返回值为"真"
fsize() 以字节为单位,返回指定字段或文件的大小
getfldstate() 返回一个数值,标明表或临时表中的字段是否已被编辑,或是否有追加的记录,或者记录的删除状态是否已更改
getnextmodified() 返回一个记录号,对应于缓冲表或临时表中下一个被修改的记录
header() 返回当前或指定表文件的表头所占的字节数
idxcollate() 返回索引或索引标识的排序序列
indbc() 如果指定的数据库对象在当前数据库中,则返回"真"(.t.)
indexseek() 在一个索引表中搜索第一次出现的某个记录
isexclusive() 判断一个表或数据库是以独占方式打开的
isflocked() 返回表的锁定状态
isreadonly() 判断是否以只读方式打开表
isrlocked() 返回记录的锁定状态
key() 返回索引标识或索引文件的索引关键字表达式
keymatch() 在索引标识或索引文件中搜索一个索引关键字
lookup() 在表中搜索字段值与指定表达式匹配的第一个记录
lupdate() 返回一个表最近一次更新的日期
mdx() 根据指定的索引编号返回打开的.cdx复合索引文件名
memlines() 返回备注字段中的行数
mline() 以字符串形式返回备注字段中的指定行
ndx() 返回为当前表或指定表打开的某一索引(jdx)文件的名称
order() 返回当前表或指定表的主控索引文件或标识
primary() 检查索引标识,如果为主索引标识,就返回"真"(.t.)
reccount() 返回当前或指定表中的记录数目
recno() 返回当前表或指定表中的当前记录号
recsize() 返回表中记录的大小(宽度)
refresh() 在可更新的sql视图中刷新数据
relation() 返回为给定工作区中打开的表所指定的关系表达式
seek() 在一个已建立索引的表中搜索一个记录的第一次出现位置
select() 返回当前工作区编号或未使用工作区的最大编号
setfldstate() 为表或临时表中的字段或记录指定字段状态值或删除状态值
sqlcancel() 请求取消一条正在执行的sql语句
sqlcolumns() 把指定数据源表的列名和关于每列的信息存储到一个visualfoxpro临时表中
sqlcommit() 提交一个事务
sqlconnect() 建立一个指向数据源的连接
sqldisconnect() 终止与数据源的连接
sqlexec() 将一条sql语句送入数据源中处理
sqlgetprop() 返回一个活动连接的当前设置或默认设置
sqlmoreresults() 如果存在多个结果集合,则将另一个结果集合复制到visualfoxpro临时表中
sqlprepare() 在使用sqlexec()执行远程数据操作前,可使用本函数使远程数据为将要执行的命令做好准备
sqlrollback() 取消当前事务处理期间所做的任何更改
sqlsetprop() 指定一个活动连接的设置
sqlstringconnect() 使用一个连接字符串建立和数据源的连接
sqltables() 把数据源中的表名存储到visualfoxpro临时表中
sys(14) 索引表达式
sys(21) 控制索引编号
sys(22) 控制标识名或索引名
sys(2011) 返回当前工作区中记录锁定或表锁定的状态
sys(2012) 返回表的备注字段块大小
sys(2021) 筛选索引表达式
sys(2029) 返回与表类型对应的值
sys(3054) rushmore优化等级 ·
tag() 返回打开的.cdx多项复合索引文件的标识名,或者返回打开的.idx单项索引文件的文件名
tagcount() 返回复合索引文件(.cdx)标识以及打开的单项索引文件(.idx)的数目
tagno() 返回复合索引文件(.cdx)标识以及打开的单项索引(.idx)文件的索引位置
target() 返回一个表的别名,该表是setrelation命令的into子句所指定关系的目标
unique() 用于测试索引是否以惟一性方式建立
updated() 用于测试在最近的read命令中,数据是否已被修改
used() 确定是否在指定工作区中打开了一个表
xmltocursor() 转换xml文本到visualfoxpro游标或表
----------------------------------------------
visual foxpro日期和时间函数
ctod()把字符表达式转换成日期表达式。
cdow()从给定日期或日期时间表达式中返回星期值。
cmonth()返回给定日期或日期时间表达式的月份名称。
ctod()把字符表达式转换成日期表达式。
ctot()从字符表达式返回一个日期时间值。
date()返回由操作系统控件的当前系统日期,或创建一个与2000年兼容的日期值。
datetime()以日期时间值返回当前的日期和时间, 或创建一个 2000 兼容的日期时间值。
day()以数值型返回给定日期表达式或日期时间表达式是某月中的第几天。
dmy()从一个日期型或日期时间型表达式返回一个“日-月-年”格式的字符表达式(例如,31 may 1995)。月名不缩写。
dtoc()由日期或日期时间表达式返回字符型日期。
dtos()从指定日期或日期时间表达式中返回 yyyymmdd 格式的字符串日期。
dtot()从日期型表达式返回日期时间型值。
gomonth()对于给定的日期表达式或日期时间表达式,返回指定月份数目以前或以后的日期。
hour()返回日期时间表达式的小时部分。
mdy()以“月-日-年”格式返回指定日期或日期时间表达式,其中月份名不缩写。
minute()返回日期时间型表达式中的分钟部分。
month()返回给定日期或日期时间表达式的月份值。
quarter()返回一个日期或日期时间表达式中的季度值。
sec()返回日期时间型表达式中的秒钟部分。
seconds()以秒为单位返回自午夜以来经过的时间。
sys(1)以日期数字字符串的形式返回当前系统日期。
sys(2)返回自午夜零点开始以来的时间,按秒计算。
sys(10)将 (julian) 日期转换成一个字符串。
sys(11)将日期格式表示的日期表达式或字符串转换成 (julian) 日期。
time()以 24 小时制、8 位字符串(时:分:秒)格式返回当前系统时间。
ttoc()从日期时间表达式中返回一个字符值。
ttod()从日期时间表达式中返回一个日期值。
week()从日期表达式或日期时间表达式中返回代表一年中第几周的数值。
year()从指定的日期表达式中返回年份。
visual foxpro字符函数
alltrim(). 删除指定字符表达式的前后空格符
asc() 返回字符表达式中最左边字符的ansi值
at() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中首次出现的位置
at_c() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中首次出现的位置
atc() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中首次出现的位置
atcc() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中首次出现的位置
addbs() 如果必要,向一个路径表达式添加一个反斜杠
atcline() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中第一次出现的行号
atline() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段中首次出现的行号
between() 判断一个表达式的值是否在另外两个相同数据类型的表达式的值之间
chr() 根据指定的ansi数值代码返回其对应的字符
chrtran() 将第一个字符表达式中与第二个表达式的字符相匹配的字符替换为第3个表达式中相应的字符
chrtranc() 将第一个字符表达式中与第二个表达式的字符相匹配的字符替换为第3个表达式中相应的字符
cpconvert() 把字符、备注字段或字符表达式转换到其他代码页
chrsaw() 确定一个字符是否出现在键盘缓冲区中
chrtran() 在一个字符表达式中,把与第二个表达式字符相匹配的字符替换为第三个表达式中相应字符
chrtranc() 将第一个字符表达式中与第二个表达式的字符相匹配的字符替换为第三个表达式中相应的字符
difference() 返回0到4间的一个整数,表示两个字符表达式间的相对语音差别
empty() 确定表达式是否为空值
gerwordcounr() 计数一个中中的单词数
getwordnum() 从一个串中返回一个指定的词
inlist() 判断一个表达式是否与一组表达式中的某一个相匹配 '
isalpha() 判断字符表达式的最左边一个字符是否为字母
isblank() 判断表达式是否为空值
isdigit() 判断字符表达式的最左边一个字符是否为数字(0到9)
isleadbyte() 如果字符表达式第一个字符的第一个字节是前导字节,则返回"真"(.t.)
islower() 判断字符表达式最左边的字符是否为小写字母
ismouse() 判断计算机是否具有鼠标
isnull() 判断计算结果是否为null值
isupper() 判断字符表达式的第一个字符是否为大写字母(a~z)
left() · 从字符表达式最左边一个字符开始返回指定数目的字符
leptc() 从字符表达式最左边一个字符开始返回指定数目的字符
len() 返回字符表达式中字符的数目
lenc() 返回字符表达式中字待的数目
like() 确定一个字符表达式是否与另一个字符表达式相匹配
likec() 决定一个字符表达式是否与另一个字符表达式相匹配
lower() 以小写字母形式返回指定的字符表达式
ltrim() 删除指定的字符表达式的前导空格,然后返回得到的表达式
occurs() 返回一个字符表达式在另一个字符表达式中出现的次数
oemtoansi() 用于将字符串表达式中的字符转换成与其相对应的ansi字符集中的字符
padl()、padr()、padc() 由一个表达式返回一个字符中,并从左边,右边或同时从两边用空格或字符把该字符串填充到 指定长度
proper() 从字符表达式中返回一个字符串,字符串中的每个首字母大写
rat() 返回一个字符表达式或备注字段在另一个字符表达式或备注字段内第一次出现的位置,从最右 边的字符算起
ratc() 返回一个字符表达式在另-个字符表达式或备注字段最后一次出现所在的行号,从最后-行算起
ratline() 回一个字符表达式或备注字段在另一个字符表达式或备注字段中最后出现的行号,从最后一行 开始计数 。
repucate() 返回一个字符串,这个字符串是将指定字符表达式重复指定次数后得到的
right() 从一个字符串的最右边开始返回指定数目的字符
rightc() 从一个字符串中返回最右边指定数目的字符
rtrim() 删除了字符表达式后续空格后,返回结果字符串
soundex() 返回指定的字符表达式的语音表示
space() 返回由指定数目的空格构成的字符串
str() 返回与指定数值表达式对应的字符
strconv() 将字符表达式转换成另一种形式
strextract() 返回一个两个分隔符间的串
strtran() 在第一个字符表达式或备注字段中,搜索第二个字符表达式或备注字段,并用第3个字符表达-式或备注字段替换每次出现的第2个字符表达式或备注字段
stuff() 返回一个字符串,此字符串是通过用另一个字符表达式替换现有字符表达式中指定数目的字符得到的
stuffc() 返回一个字符串,此字符串是通过用另一个字符表达式替换现有字符表达式中指定数目的字符、得到的
substr() 从给定的字符表达式或备注字段中返回字符串
substrc() 从给定的字符表达式或者备注字段返回字符串
sys(15) 替换字符串中的字符
sys(20) 转换德文文本
textmerge() 提供串表达式的求值 。
trim() 返回删除全部后缀空格后的指定字符表达式
txtwidth() 按照字体平均字符宽度返回字符表达式的长度
type() 计算字符表达式,并返回其内容的数据类型
upper() 用大写字母返回指定的字符表达式
----------------------------------------------
visual foxpro数值函数
abs() 返回指定数值表达式的绝对值
acos() 返回指定数值表达式的反余弦值
asin() 返回数值表达式的反正弦弧度值
atan() 返回数值表达式的反正切弧度值
atn2() 返回指定值的反正切值,返回值无象限限制
bintoc() 将整型用二进制字符型表示 。
bitand() 返回两个数值型数值在按位进行and运算后的结果
bitclear() 清除一个数值型数值的指定位(将此位设置成0),并返回结果值
bitlshifr() 返回一个数值型数值向左移动给定位后的结果
brrnot() 返回一个数值型数值按位进行not运算的结果
bitor() 返回两个数值型数值按位进行or运算的结果
bitrshiff() 返回一个数值型数值向右移动指定位后的结果
bitset() 将一个数值型数值的某一位设置为1并返回结果
bittest() 确定一个数值型数值的指定位是否为1
bitxor() 返回两个数值型数值按位进行异或运算的结果
ceiling() 返回大于或等于指定数值表达式的最小整数
cos() 返回数值表达式的余弦值
ctomn() 将二进制字符型表示转换为整数
dtor() 将度转换为弧度
evaluate() 计算字符表达式的值并返回结果
evl() 从两个表达式中返回一个非空值
exp() 返回eax的值,其中x是某个给定的数值型表达式
floor() 对于给定的数值型表达式值,返回小于或等于它的最大整数
fv() 返回一笔金融投资的未来值
int() 计算一个数值表达式的值,并返回其整数部分
log() 返回给定数值表达式的自然对数(底数为c)
logl0() 返回给定数值表达式的常用对数(以10为底) ·
max() 对几个表达式求值,并返回具有最大值的表达式
min() 计算一组表达式,并返回具有最小值的表达式
mod() 用一个数值表达式去除另一个数值表达式,返回余数
mton() 由一个货币型表达式返回一个数值型值
normalize() 把用户提供的字符表达式转换为可以与visualfoxpro函数返回值相比较的格式
ntom() 由一个数值表达式返回含有四位小数的货币值
nvl() 从两个表达式返回一个非null值
payment() 返回固定利息贷款按期兑付的每一笔支出数量
pi() 返回数值常数n
pv() 返回某次投资的现值
rand() 返回一个0到1之间的随机数
round() 返回圆整到指定小数位数的数值表达式
rtod() 将弧度转化为度
sign() 当指定数值表达式的值为正、负或0时,分别返回1、-1或0
sin() 返回一个角度的正弦值 ·
sqrt() 返回指定数值表达式的平方根
sys(2007) 返回一个字符表达式的检查求和值
tan() 返回角度的正切值
val() 由数字组成的字符表达式返回数字值