SQL Server单引号两种处理技巧
sql中引号的特殊用法(转自红黑联盟)

sql中引号的特殊⽤法(转⾃红⿊联盟)1.sql语句中是不区分⼤⼩写的,但引号中的的字符除外,包括单双引号.sql中单引号相当是其他语⾔中的双引号.例如:select * from emp where ename = 'scott'没有结果,select * from emp where ename='SCOTT' 就有结果.双引号⽤法就怪异⼀点.双引号和引号中的字符⼀起被当作⼀个标识符.⽐如我们create table table(ename varchar2(5),age int);会有错,因为table是关键字.但我们⽤双引号把关键字引起来就可以⽤了.create table "table"(ename varchar2(5),age int); select * from "table";2.如果在引号中使⽤引号该咋整呢:(多加⼀个单引号做转义字符)⽤法⼀:(⽤两个单引号,注意:可不是双引号喔)declarev_name varchar2(10);v_num number(4);beginexecute immediate 'select empno from emp where ename=''SCOTT'' ' into v_name;execute immediate 'insert into emp(ename) values(''arwen'')';end;⽤法⼆:select ' I''m arwen' from dual;结果是:I'm arwen⽤法三:(三个单引号,中间加||)declarev_name varchar2(10);v_num number(4);beginv_name :='SCOTT';execute immediate 'select empno from emp where ename='''||v_name||''' ' into v_name;--execute immediate 'CREATE SEQUENCE '||v_name||' START WITH 1 INCREMENT BY 1'; --直接引⽤变量end;当然这样引号太多了容易让⼈搞晕,所以还可以⽤另外的⽅式实现同样的功能.declarev_name varchar2(10);v_num number(4);beginv_name :='SCOTT';execute immediate 'select empno from emp where ename=:inputName ' into v_nameusing v_name;end;(补充:在pl sql块中不能直接⽤DDL,DCL语句)⽐如begindrop table emp;end;就会出错.不过可以通过使⽤execute immediate使⽤DDL,DCL.⽐如beginexecute immediate'drop table emp';end;。
sql语句插入的数据中含有单引号怎么办

sql 语句插入的数据中含有单引号怎么办?收藏 语句插入的数据中含有单引号怎么办新一篇: 子类父类方法与属性的调用(1) | 旧一篇 java 中判断 socket 网络远端是否断开连接 旧一篇: 新一篇 子类父类方法与属性的调用sql 语句插入的数据中含有单引号怎么办? 2001:8:17sql 语句插入的数据中含有单引号怎么办?sql 中,insert into yourTable(f1,f2) values(100,'abc')字符串数据是用单引号包在外面的,如果插入的数据中包含单引号,就需要处理,你可以将单引号替换成 两个单引号,在 sql 中连续两个单引号就表示一个单引号字符,例如insert into yourTable(f1,f2) values(100,'ab''c')表示插入新记录 f2 字段为 ab'c使用函数 replace 可以实现这个功能: replace(yourStr,"'","''")子类父类方法与属性的调用(1)收藏 子类父类方法与属性的调用新一篇: 子类父类方法与属性的调用(2).txt | 旧一篇 sql 语句插入的数据中含有单引号怎么办 旧一篇: 语句插入的数据中含有单引号怎么办? 新一篇 子类父类方法与属性的调用package com.me; public class Book extends Books{ String name="subname"; String author;//show 方法的重载 public void show(String s){ System.out.println("sub show"); } //show1 方法的重写,不是重载 public void show1(){ System.out.println("sub show1"); } public void show3(){ System.out.println("sub show3"); } public static void main(String args[]){ Books bs=new Book(); //属性调用父类,方法调用子类(虚方法调用) {System.out.println(); bs.show1(); } //执行时父类 show 方法中的 this.show1()指代子类中的 show1 方法 System.out.println("***********"); {bs.show(); } //bs 能访问 super 中的所有方法 System.out.println("***********"); { bs.show2(); } System.out.println("***********"); //bs 无法访问 Book 类中的 show3 方法, 若父类中有相同 show3 方法(有相同的方法名 和参数)则 //会访问子类中的方法,这就是前面所说的方法调用子类子类 { //bs.show3(); 出错 } //查看 bs 是否是 Book 类的实例,若是则强制类型转化后就可以访问子类中的所有方法 if(bs instanceof Book){ Book book=(Book)bs; book.show3(); } } } 扩展:Books 为一接口而 Book 为实现这一接口的类,访问 name 时 访问的还是接口中的值(super name)package com.me; class Books { String name="supername"; String author; public void show(){ System.out.println("super show"); this.show1(); } public void show1(){ System.out.println("super show1"); } public void show2(){ System.out.println("super show2"); } public void show3(String s){ System.out.println("super show3"); } }supername sub show1 *********** super show sub show1 *********** super show2 *********** sub show3子类父类方法与属性的调用(2).txt 收藏 子类父类方法与属性的调用新一篇: 子类父类方法与属性的调用(3) | 旧一篇 子类父类方法与属性的调用 旧一篇: 子类父类方法与属性的调用(1) 新一篇 子类父类方法与属性的调用public class Books { String name="super name"; static String age="super age"; public Books(){ System.out.println("super 构造方法"); System.out.println(); (1) System.out.println(name); System.out.println(age); } public static void show(){ System.out.println("super static show"); System.out.println(age); } public void show1(){ System.out.println("super common show1"); System.out.println(); System.out.println(name); System.out.println(this.age); System.out.println(age); } } //以上两句均会打印"super name"public class Book extends Books { String name="sub name"; static String age="sub age"; public Book(){ System.out.println("sub 构造方法"); System.out.println(); (2) System.out.println(name); System.out.println(age); } public static void show(){ System.out.println("sub show"); System.out.println(age); } public void show1(){ System.out.println("sub common show1"); //以上两句均会打印"sub name"System.out.println(); System.out.println(name); System.out.println(this.age); System.out.println(age); } public static void main(String args[]){ System.out.println("bs 构造方法:"); Books bs=new Book(); 法 System.out.println("bs 的 static show:"); bs.show(); System.out.println("bs 的 common show1:"); bs.show1(); (3) System.out.println(); (5) System.out.println(bs.age); System.out.println("b 的构造方法"); Book b=new Book(); System.out.println("b 的 static show:"); b.show(); System.out.println("b 的 common show1:"); b.show1(); (4) System.out.println(); (6) System.out.println(b.age); } } //先执行父类的构造方法再执行子类的构造方执行结果 bs 构造方法: super 构造方法 super name super name super age sub 构造方法 sub name sub name sub age bs 的 static show: super static show super age bs 的 common show1: sub common show1sub name sub name sub age sub age super name (3) super age (5) b 的构造方法 super 构造方法 super name super name super age sub 构造方法 sub name sub name sub age b 的 static show: sub show sub age b 的 common show1: sub common show1 sub name sub name sub age sub age sub name (4) sub age 总结: 1.在执行子类的构造方法前先执行父类的构造方法 2.子类和父类中都有属性 name 时 注意(1)(2)(3)(4) (1)(2)中在方法中直接打印 name, 时会直接打印本类中的 name 属性值,但如 (3)(4)中 Books bs=new Book(); Book b=new Book(); (3)中打印的是父类的 name 属性值(这就是前面所说过的属性调用父类,方法调用子类), (4)中打印的是子类中的 name 属性值 这两种情况一定要弄清楚 3.前面说过 Books bs=new Book();时属性调用父类,方法调用子类但是当属性,方法 都声明为静态时如子类父类中的类属性 age,类方法 show 时 ,this.show 所指 的就是 ,this.show 所在类的类属性和类方法 4.Books bs=new Book(); (6)只有 的时候才会打印父类中的 name 属性值, 其他在方法中使用 (或 name)打印的都是本类中的 name 值。
sql语句中单引号,双引号的处理方法

sql语句中单引号,双引号的处理⽅法下⾯我们就分别讲述,虽然说的是Insert语句,但是Select、Update、Delete语句都是⼀样的。
假如有下述表格:mytabe字段1 username 字符串型(姓名)字段2 age 数字型(年龄)字段3 birthday ⽇期型(⽣⽇)字段4 marry 布尔型(是否结婚,结婚为True,未结婚为False)字段5 leixing 字符串型(类型)1.插⼊字符串型假如要插⼊⼀个名为张红的⼈,因为是字符串,所以Insert语句中名字两边要加单撇号,如: strsql=“Insert into mytable(username) values(‘张红')”如果现在姓名是⼀个变量thename,则写成strsql=”Insert into mytable(username) values(‘” & thename & “')”这⾥Insert into mytable(username) values(‘是张红前⾯的部分,thename是字符串变量,') 是张红后⾯的部分。
将thename变量替换成张红,再⽤&将三段连接起来,就变成了 strsql=“Insert into mytable(username) values(‘张红')”。
如果要插⼊两个字段,如姓名为“张红”,类型为“学⽣”strsql=“Insert into mytable(username,leixing) values(‘张红','学⽣')”如果现在姓名是⼀个变量thename,类型也是⼀个变量thetype,则写成: strsql=”Insert into mytable(username,leixing) values(‘” & thename & “','” & thetype & “')”和第⼀个例⼦⼀样,将thename和thetype替换后,再⽤连接符,就连接成和上⾯⼀样的字符串了。
sql语句插入的数据中含有单引号怎么办

sql 语句插入的数据中含有单引号怎么办?收藏 语句插入的数据中含有单引号怎么办新一篇: 子类父类方法与属性的调用(1) | 旧一篇 java 中判断 socket 网络远端是否断开连接 旧一篇: 新一篇 子类父类方法与属性的调用sql 语句插入的数据中含有单引号怎么办? 2001:8:17sql 语句插入的数据中含有单引号怎么办?sql 中,insert into yourTable(f1,f2) values(100,'abc')字符串数据是用单引号包在外面的,如果插入的数据中包含单引号,就需要处理,你可以将单引号替换成 两个单引号,在 sql 中连续两个单引号就表示一个单引号字符,例如insert into yourTable(f1,f2) values(100,'ab''c')表示插入新记录 f2 字段为 ab'c使用函数 replace 可以实现这个功能: replace(yourStr,"'","''")子类父类方法与属性的调用(1)收藏 子类父类方法与属性的调用新一篇: 子类父类方法与属性的调用(2).txt | 旧一篇 sql 语句插入的数据中含有单引号怎么办 旧一篇: 语句插入的数据中含有单引号怎么办? 新一篇 子类父类方法与属性的调用package com.me; public class Book extends Books{ String name="subname"; String author;//show 方法的重载 public void show(String s){ System.out.println("sub show"); } //show1 方法的重写,不是重载 public void show1(){ System.out.println("sub show1"); } public void show3(){ System.out.println("sub show3"); } public static void main(String args[]){ Books bs=new Book(); //属性调用父类,方法调用子类(虚方法调用) {System.out.println(); bs.show1(); } //执行时父类 show 方法中的 this.show1()指代子类中的 show1 方法 System.out.println("***********"); {bs.show(); } //bs 能访问 super 中的所有方法 System.out.println("***********"); { bs.show2(); } System.out.println("***********"); //bs 无法访问 Book 类中的 show3 方法, 若父类中有相同 show3 方法(有相同的方法名 和参数)则 //会访问子类中的方法,这就是前面所说的方法调用子类子类 { //bs.show3(); 出错 } //查看 bs 是否是 Book 类的实例,若是则强制类型转化后就可以访问子类中的所有方法 if(bs instanceof Book){ Book book=(Book)bs; book.show3(); } } } 扩展:Books 为一接口而 Book 为实现这一接口的类,访问 name 时 访问的还是接口中的值(super name)package com.me; class Books { String name="supername"; String author; public void show(){ System.out.println("super show"); this.show1(); } public void show1(){ System.out.println("super show1"); } public void show2(){ System.out.println("super show2"); } public void show3(String s){ System.out.println("super show3"); } }supername sub show1 *********** super show sub show1 *********** super show2 *********** sub show3子类父类方法与属性的调用(2).txt 收藏 子类父类方法与属性的调用新一篇: 子类父类方法与属性的调用(3) | 旧一篇 子类父类方法与属性的调用 旧一篇: 子类父类方法与属性的调用(1) 新一篇 子类父类方法与属性的调用public class Books { String name="super name"; static String age="super age"; public Books(){ System.out.println("super 构造方法"); System.out.println(); (1) System.out.println(name); System.out.println(age); } public static void show(){ System.out.println("super static show"); System.out.println(age); } public void show1(){ System.out.println("super common show1"); System.out.println(); System.out.println(name); System.out.println(this.age); System.out.println(age); } } //以上两句均会打印"super name"public class Book extends Books { String name="sub name"; static String age="sub age"; public Book(){ System.out.println("sub 构造方法"); System.out.println(); (2) System.out.println(name); System.out.println(age); } public static void show(){ System.out.println("sub show"); System.out.println(age); } public void show1(){ System.out.println("sub common show1"); //以上两句均会打印"sub name"System.out.println(); System.out.println(name); System.out.println(this.age); System.out.println(age); } public static void main(String args[]){ System.out.println("bs 构造方法:"); Books bs=new Book(); 法 System.out.println("bs 的 static show:"); bs.show(); System.out.println("bs 的 common show1:"); bs.show1(); (3) System.out.println(); (5) System.out.println(bs.age); System.out.println("b 的构造方法"); Book b=new Book(); System.out.println("b 的 static show:"); b.show(); System.out.println("b 的 common show1:"); b.show1(); (4) System.out.println(); (6) System.out.println(b.age); } } //先执行父类的构造方法再执行子类的构造方执行结果 bs 构造方法: super 构造方法 super name super name super age sub 构造方法 sub name sub name sub age bs 的 static show: super static show super age bs 的 common show1: sub common show1sub name sub name sub age sub age super name (3) super age (5) b 的构造方法 super 构造方法 super name super name super age sub 构造方法 sub name sub name sub age b 的 static show: sub show sub age b 的 common show1: sub common show1 sub name sub name sub age sub age sub name (4) sub age 总结: 1.在执行子类的构造方法前先执行父类的构造方法 2.子类和父类中都有属性 name 时 注意(1)(2)(3)(4) (1)(2)中在方法中直接打印 name, 时会直接打印本类中的 name 属性值,但如 (3)(4)中 Books bs=new Book(); Book b=new Book(); (3)中打印的是父类的 name 属性值(这就是前面所说过的属性调用父类,方法调用子类), (4)中打印的是子类中的 name 属性值 这两种情况一定要弄清楚 3.前面说过 Books bs=new Book();时属性调用父类,方法调用子类但是当属性,方法 都声明为静态时如子类父类中的类属性 age,类方法 show 时 ,this.show 所指 的就是 ,this.show 所在类的类属性和类方法 4.Books bs=new Book(); (6)只有 的时候才会打印父类中的 name 属性值, 其他在方法中使用 (或 name)打印的都是本类中的 name 值。
sqlserver 索引用法

标题:深入了解SQL Server索引的用法摘要:本文将深入探讨SQL Server索引的用法,包括索引的概念、创建、优化和使用技巧,帮助读者更好地利用索引提高数据库的性能。
一、索引的概念1. 什么是索引在SQL Server中,索引是一种特殊的数据结构,用于快速定位和访问数据库表中的数据。
通过索引,可以加快数据检索的速度,提高查询性能。
2. 索引的作用索引可以帮助数据库引擎快速定位到符合查询条件的数据,减少数据库的扫描和比对操作,从而提高数据检索的效率。
二、创建索引1. 创建索引的语法在SQL Server中,可以通过CREATE INDEX语句来创建索引,语法如下:```CREATE INDEX index_nameON table_name (column1, column2, ...);```2. 索引的类型SQL Server支持多种类型的索引,包括主键索引、唯一索引、聚簇索引和非聚簇索引等。
不同类型的索引适用于不同的场景,需要根据实际情况选择合适的索引类型进行创建。
三、优化索引1. 索引的设计原则在设计索引时,需要考虑到索引的覆盖性、选择性和唯一性等因素,以及索引对于 INSERT、UPDATE 和 DELETE 操作的影响。
合理的索引设计可以有效提高数据库的性能。
2. 索引的优化策略为了提高索引的性能,可以采取一些优化策略,如合并重叠索引、删除不必要的索引、定期重建索引和使用索引查找替代检索等方法。
四、使用技巧1. 如何使用索引在编写SQL查询语句时,可以通过使用EXPL本人N PLAN或者执行计划等工具来帮助分析查询语句的执行计划,以及确定是否使用了合适的索引。
2. 注意事项在使用索引时,需要注意索引的命中率、页面填充因子、索引维护等问题,以及定期对索引进行监控和优化。
五、总结通过本文的介绍,读者应该对SQL Server索引的概念、创建、优化和使用技巧有了一定的了解。
在实际应用中,需要根据具体的业务需求和数据库环境,选择合适的索引策略,以提高数据库的性能和稳定性。
sqlserver中的字符串(含有变量的字符串连接)总结

sqlserver中的字符串(含有变量的字符串连接)总结sqlserver 中的字符串(含有变量的字符串连接)总结1.首先说明一下单引号和说引号的区别(1)单引号:在SQL语句中用于表达一个字符串(双引号不能表达)如:declare@str Nvarchar(200) set@str='selecT *from sys.databases' 如果写成set@str=”selecT *from sys.databases”就会报错。
还有就是在向表中插入数据的时候,是字符串类型的字段,在values里面都得加上单引号,但是数值int型的数据可加可不加单引号插入数据。
注意:日期类型也要加引号如:insert into#tmp values('张三','男',23)=insert into#tmp values('张三','男','23')(2)双引号:在SqlServer中主要用于对单引号的转义如:set@str='selecT *from sys.databases where name=”master”'这是因为需要表达出’master’,但是外面已经有一层单引号了,如果不写成”master”,继续写成'selecT *from sys.databases where name=’master’'就会出现第1个单引号和第2个单引号匹配,而不是我们想的和第4个匹配,这样就出现了匹配错误。
所以我们用双引号来转义成单引号。
(3)字符串的连接符++是连接运算符,它可以将两个字符串连接成一个字符串。
eg:a=’abc’ + ‘def’执行连接运算后,a=‘abcdef’。
再如a=‘abc’ + @temp注意,这里@temp是一个字符串变量,假如@temp=‘def’,那么代入上面的式子,则结果为:a=‘abc’+ ‘def’继续执行连接运算,结果a=‘abcdef’。
sqlserver sql关键字处理

一、简介SQL(Structured Query Language)是一种特定目的的编程语言,用于管理关系数据库系统。
在SQL Server中,SQL是一种用于查询、修改和管理数据库的重要语言。
SQL关键字是SQL语言中的特定保留字,被用于识别、操作和管理数据库对象。
对于开发人员和数据库管理员来说,了解SQL关键字的处理方法非常重要。
二、SQL关键字的处理方法1. 避免使用关键字作为对象名称在创建数据库表、字段等对象时,应避免使用SQL关键字作为对象名称。
由于SQL关键字是被SQL语法保留的,如果将关键字用作对象名称,可能会导致语法错误和不可预测的行为。
为了避免潜在的问题,应选择具有描述性和唯一性的名称,而不是使用关键字。
2. 使用方括号或引号来转义关键字在SQL Server中,可以使用方括号([])或双引号("")来转义包含关键字的对象名称。
如果需要创建一个名为"order"的表,可以使用方括号或引号将其转义,如下所示:```CREATE TABLE [order] (id INT,name VARCHAR(50));```或者```CREATE TABLE "order" (id INT,name VARCHAR(50));```3. 使用别名在使用SQL关键字时,可以给对象名称或字段名称指定别名。
通过使用别名,可以避免直接使用关键字,减少潜在的错误。
在执行查询时,可以使用别名来代替关键字,如下所示:```SELECT [order].id AS order_id, [order].name AS order_name FROM [order];```4. 使用限定符在SQL语句中,可以使用限定符来明确指定对象的所有者。
通过使用限定符,可以将对象的所有者和对象名称分开,避免与关键字混淆。
可以使用限定符将对象的所有者和对象名称分开,如下所示:```SELECT dbo.[user].id, dbo.[user].nameFROM dbo.[user];```5. 使用转义字符在SQL语句中,可以使用转义字符来转义包含关键字的字符串。
mysql sql 引号 标准

mysql sql 引号标准一、概述MySQL是一种流行的关系型数据库管理系统,SQL是它的核心语言之一。
在MySQL中,SQL语句中的字符串需要使用引号进行标识,以便区分不同的字符串值。
为了规范引号的使用,特制定本标准。
二、引号类型及标准用法1.单引号:用于标识普通字符串值。
标准用法为:'string'。
例如,要创建一个名为"mytable"的表格,可以使用以下SQL语句:CREATETABLE'mytable'(...)。
2.双引号:用于标识需要用双引号包围的字符串值。
例如,当字符串中包含双引号时,需要使用双引号作为自身的一部分。
标准用法为:"string"。
例如,要创建一个包含双引号的表格名,可以使用以下SQL语句:CREATETABLE"mytable"(...)。
3.反引号:用于标识原始字符串值(即包含特殊字符的字符串)。
标准用法为:`string`。
例如,要创建一个包含特殊字符的表格名,可以使用以下SQL语句:CREATETABLE`mytable`(...)。
三、特殊情况1.当字符串中包含单引号时,可以使用两种方式处理:一是使用转义字符(\)将单引号转换为双引号;二是使用反引号将整个字符串包含在内。
2.当字符串中包含双引号时,必须使用双引号作为自身的一部分(即使用双引号作为单引号的反面)。
四、示例以下是一些使用不同引号的SQL语句示例:1.普通字符串值:'Thisisastringvalue.'2.需要用双引号包围的字符串值:"Thisstringcontainsadoublequote."3.包含特殊字符的原始字符串值:`Thiscontainsspecialcharacters.`五、总结本标准旨在规范MySQLSQL语句中的引号使用,以确保字符串值的正确标识和区分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server单引号两种处理技巧
和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差、效率低、功能弱等等缺点。
因此,大多数的程序员极少或较少用这种绑定的方式。
而采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦S QL语句的查询条件的变量有单引号出现,数据库引擎就会报错指出SQL语法不对,本人发现有两种方法可以解决和处理这种单引号的问题(以VB为例子)。
方法一:
利用转义字符处理SQL语句。
下面的函数可以在执行SQL语句前调用,执行处理后的结果即可产生正确的结果。
其中str参数是你的SQL字符串。
函数一旦发现字符串中有单引号出现,就在前面补上一个单引号。
方法二:
利用数据对象中的参数。
可以利用MAND对象,把含有单引号的字符串传递给COMMAND,然后执行查询等操作即可。
以上两种方法比较,方法一增加了系统处理时间,方法二简洁、高效,如果采用存储过程,然后再传递参数给存储过程,存储过程是预编译的,这样系统的效率更高。
下面就举例子加以说明。
程序如下:
首先把前面的函数加入。
在窗体的通用中声明如下变量:
cnn1.Open strCnn, , , 0 '打开连接
End Sub
Private Sub Command1_Click() '演示字符处理
Dim i As Integer
Dim j As Integer
Set parm = New ADODB.Parameter
Set mycommand = New mand
Dim str As String
str = Combo1.Text
str = ProcessStr (str)
mycommand.ActiveConnection = cnn1 '
指定该command 的当前活动连接
mandText = " select * from employee where fname = '" & str & "'"
mandType = adCmdText '表明command 类型
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
i = i + 1 ' i 中保存记录个数
rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1 '动态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = i + 1
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next '设置第一行的标题,用域名填充
i = 0
'Set rstByQuery = mycommand.Execute()
rstByQuery.Requery
Do While Not rstByQuery.EOF
i = i + 1
MSFlexGrid1.Row = i '确定行
For j = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = j + 1
MSFlexGrid1.Text = rstByQuery(j) '添充所有的列
Next
rstByQuery.MoveNext
Loop '这个循环用来填充MSFlexGrid的内容
End Sub
Private Sub Command2_Click()'参数方法
Dim i As Integer
Dim j As Integer
Set parm = New ADODB.Parameter
Set mycommand = New mand
' parm_ = "name1" this line can be ommited
parm.Type = adChar '参数类型
parm.Size = 10 '参数长度
parm.Direction = adParamInput '参数方向,输入或输出
parm.Value = Combo1.Text '参数的值
mycommand.Parameters.Append parm '加入参数
mycommand.ActiveConnection = cnn1 '
指定该command 的当前活动连接
mandText = " select *
from employee where fname =? "
mandType = adCmdText '表明command 类型
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
i = i + 1 ' i 中保存记录个数
rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1 '动态设置MSFlexGrid的行
和列
MSFlexGrid1.Cols = rstByQuery.Fields.count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = i + 1
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next '设置第一行的标题,用域名填充
i = 0
rstByQuery.Requery
Do While Not rstByQuery.EOF
i = i + 1
MSFlexGrid1.Row = i '确定行
For j = 0 To rstByQuery.Fields.count - 1
MSFlexGrid1.Col = j + 1
MSFlexGrid1.Text = rstByQuery(j) '添充所有的列
Next
rstByQuery.MoveNext
Loop '这个循环用来填充MSFlexGrid的内容
End Sub
查询部分可以用存储过程以提高处理效率,减低网络流量。
本程序在NT WORKSTA TION 4.0 SP4、SQL SERVER 7.0 上调试通过。