1、 用The SQL Server NET Data Provider连接数据库
The SQL Server NET Data Provider是利用SqlConnection类来连接SQL Server70或更高版本的数据库,
SqlConnection类位于名称空间SystemDataSqlClient下。
连接代码:
Dim sqlConnection1 As SqlClientSqlConnection
Dim strConnect As String=”data source=服务器名;initial catalog=数据库名;user id=sa;password=;”
sqlConnection1=New SystemDataSqlClientSqlConnection(strConnect)
sqlConnection1open ‘打开数据库
sqlConnection1close ‘关闭连接,释放资源
2、 用The OLE DB NET Data Provider连接数据库
上面已经说过,利用The OLE DB NET Data Provider可以访问Access、Oracle和SQL Server等种数据
库,那么,它是怎样访问这些数据库的呢?The OLE DB NET Data Provider是通过位于名称空间Sy
stemDataOleDb类库下的OleDbConnection类来连接这三种不同类型的数据库的。下面举例说明:
1)连接SQL Server数据库
Dim oleDbConnection1 As OleDbOleDbConnection
Dim strConnect As Sting=”Provider=SQLOLEDB;Persist Security Info=False;Data Source=服务器名;Initial Catalog=数据库名;User ID=sa;Password=;”
oleDbConnection1=New SystemDataOleDbOleDbConnection(strConnect)
2)连接Access数据库
假设要连接的Access数据库名为“Examplemdb”,存放在d:\Data\目录下。
Dim oleDbConnection1 As OleDbOleDbConnection
Dim strConnect As Sting=”Provider=MicrosoftJetOLEDB40;Data Source=d:\Data\ Examplemdb”
oleDbConnection1= New SystemDataOleDbOleDbConnection(strConnect)
3)连接Oracle数据库
Dim oleDbConnection1 As OleDbOleDbConnection
Dim strConnect As Sting=”Provider=MSDAORA;Data Source=服务器名;User ID=用户ID;Password=密码;”
oleDbConnection1= New SystemDataOleDbOleDbConnection(strConnect)
3、 用The ODBC NET Data Provider连接数据库
The ODBC NET Data Provider连接数据库是通过OdbcConnection类来实现的,这个类位于名称空间
MicrosoftDataOdbc下,而名称空间MicrosoftDataOdbc是封装在MicrosoftDataOdbcdll文件下的。
由于篇幅有限,这里就只介绍连接Sql Server和Oracle数据库的方法,其他数据库的连接方法基本类
似,我就不再多讲了。
1)连接Sql Server数据库
Dim odbcDbConnetion1 As MicrosoftDataOdbcConnection
Dim strConnect As Sting=”Driver={SQL Server};Server=服务器名;Uid=sa;pwd=;Database= 数据库名;”
odbcDbConnetion1=New MicrosoftDataOdbcConnection(strConnect)
2)连接Oracle数据库
Dim odbcDbConnetion1 As MicrosoftDataOdbcConnection
Dim strConnect As Sting=”Driver={Microsoft ODBC for Oracle};Server=服务器名;Uid=sa;pwd=;”
odbcDbConnetion1=New MicrosoftDataOdbcConnection(strConnect)
四、总结
通过本文的介绍,读者基本掌握了在Visual BasicNET中用ADONET和ODBCNET连接各种数据库的方法
。以上三种驱动针对不同的数据库,它们的性能方面也有很大的不同:The SQL Server NET Data Provider
的效率最高;The OLE DB NET Data Provider的效率比较底;The ODBC NET Data Provider的效率最慢。
具体连接哪一种数据库选用哪一种数据驱动要从工作效率方面来考虑。
一看IMSI就知道是搞网优的苦/逼
1我用oracle写的,语法大致差不多,试试吧。
2IMSI我记得好像是字符型的,但是连接时长那个我不记得是什么类型了,我当成字符型来写的。
3你中间说对IMSI进行统计,并对连接时长求和,后面又说对IMSI出现数量计数,并对IMSI时长继续汇总??
我的理解你是要统计有哪些IMSI,然后这些IMSI分别出现了多少次,连接时长总和多少,是这样吗?把之前的SQL稍微改了下。
连接时长我用connect_time代替了,假设连接时长类型是字符型的,我直接转成to_number,如果你倒出来的表里面连接时长是时间类型的话,把sum()里面的内容换成to_number(to_char(connect_time))
select IMSI,count(IMSI),sum(to_number(connect_time)) from table_a
group by IMSI
having count(IMSI) between 1 and 10
select,update,delete,insert into ,drop create是基本语句,select 查询是最基本的语句,做任何动作前要先查询;update更新数据,delete删除数数据;insert into插入数据;drop 删除对象;create 建立对象。
用select sum(列名),sum(列名),sum(列名)…… from 表 where 条件。
假如你的数据列名为:a,b,c,d,e,f,g。那么你横向SQLselecta,b,c,d,e,f,g,a+b+c+d+e+f+g from表名。
那么你纵向汇总的SQL语句是:selesum(a),sum(b),sum(c),sum(d),sum(e),sum(f),sum(g) from 表名。
求所有数据总和的selectsum(a)+sum(b)+sum(c)+sum(d)+sum(e)+sum(f)+sum(g) from 表名。
用select sum(列名),sum(列名),sum(列名)…… from 表 where 条件。
SQL(英文全称:Structured Query Language),即结构化查询语言。SQL是专为数据库而建立的 *** 作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
SQL功能强大、简单易学、使用方便,已经成为了数据库 *** 作的基础,并且现在几乎所有的数据库均支持SQL。
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(basetable);存储模式(内模式)称为“存储文件”(storedfile);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^。
数据更新包括数据插入、删除和修改 *** 作。它们分别由INSERT语句,DELETE语句及UPDATE语句完成。
这些 *** 作都可在任何基本表上进行,但在视图上有所限制。其中,当视图是由单个基本表导出时,可进行插入和修改 *** 作,但不能进行删除 *** 作;当视图是从多个基本表中导出时,上述三种 *** 作都不能进行。
数据插入将数据插入SQL的基本表有两种方式:一种是单元组的插入,另一种是多元组的入。单元组的插入:向基本表score中插入一个成绩元组(100002,c02,95),可使用以下语句:INSERTINTOscore(st_no,su_no。
创建数据库
创建之前判断该数据库是否存在
if exists (select from sysdatabases where name='databaseName')
drop database databaseName
go
Create DATABASE database-name
删除数据库
SQL2000常用命令,语法使用方法
(1) 数据记录筛选:
sql="select from 数据表 where 字段名=字段值 order by 字段名 [desc]"
sql="select from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 from 数据表 where 字段名 order by 字段名 [desc]"
sql="select from 数据表 where 字段名 in ('值1','值2','值3')"
sql="select from 数据表 where 字段名 between 值1 and 值2"
(2) 更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
(3) 删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)
(4) 添加数据记录:
sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目标数据表 select from 源数据表" (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=connexecute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
(5) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
4 记录集对象的方法:
rsmovenext 将记录指针从当前的位置向下移一行
rsmoveprevious 将记录指针从当前的位置向上移一行
rsmovefirst 将记录指针移到数据表第一行
rsmovelast 将记录指针移到数据表最后一行
rsabsoluteposition=N 将记录指针移到数据表第N行
rsabsolutepage=N 将记录指针移到第N页的第一行
rspagesize=N 设置每页为N条记录
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
说明:增加一个栏位(没有删除某个栏位的语法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
说明:更改表得的定义把某个栏位设为主键。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
说明:把主键的定义删除。
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
说明:对某个表格的栏位建立索引以增加查询时的速度。
4、删除
DROP table_name
DROP index_name
二、的资料形态 DATATYPEs
smallint
16 位元的整数。
interger
32 位元的整数。
decimal(p,s)
p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数
点后有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
float
32位元的实数。
double
64位元的实数。
char(n)
n 长度的字串,n不能超过 254。
varchar(n)
长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n)
和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为
了支援两个字元长度的字体,例如中文字。
vargraphic(n)
可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
date
包含了 年份、月份、日期。
time
包含了 小时、分钟、秒。
timestamp
包含了 年、月、日、时、分、秒、千分之一秒。
三、资料 *** 作 DML (Data Manipulation Language)
资料定义好之后接下来的就是资料的 *** 作。资料的 *** 作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:
1、增加资料:
INSERT INTO table_name (column1,column2,)
valueS ( value1,value2, )
说明:
1若没有指定column 系统则会按表格内的栏位顺序填入资料。
2栏位的资料形态和所填入的资料必须吻合。
3table_name 也可以是景观 view_name。
INSERT INTO table_name (column1,column2,)
SELECT columnx,columny, FROM another_table
说明:也可以经过一个子查询(subquery)把别的表格的资料填入。
2、查询资料:
基本查询
SELECT column1,columns2,
FROM table_name
说明:把table_name 的特定栏位资料全部列出来
SELECT
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
三)交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数
据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等
于68=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
select_statement
UNION [ALL] selectstatement
[UNION [ALL] selectstatement][…n]
其中selectstatement为待联合的SELECT查询语句。
ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一
行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语
句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选
择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类
型,系统将低精度的数据类型转换为高精度的数据类型。
在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:
查询1 UNION (查询2 UNION 查询3)
INSERT语句
用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:
INSERT INTO EMPLOYEES valueS
('Smith','John','1980-06-10',
'Los Angles',16,45000);
通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。
我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次 *** 作并返回一个错误信息。
如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。
回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住,在SQL中逗号是元素的分隔符。
同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。
对于日期类型,我们必须使用SQL标准日期格式(yyyy-mm-dd)
以上就是关于VB.NET连接各种数据库的语句全部的内容,包括:VB.NET连接各种数据库的语句、SQL数据库中对数据进行汇总统计后的数据进行新的汇总查询语句怎么写、数据库基本语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)