‘壹’ VB连接sql
问题补充:
“我想知道相对地址连接~~是SQL
移到的机子上不装SQL那怎么办??”
1、SQL数据库连接必须是服务器,不用地址,因为在安装SQL
Server
2000
后,你的数据库地址已经确定;
2、在一般情况下不安装是不可以的,对于Access数据库现在的操作系统有其驱动,而没有SQL的,除非使用网络,例如局域网。
SQL
SERVER
2000
数据库代码比较简单,无非数据库连接语句不同,其他和Access数据库没有大的区别。
如果“程序要移动到其他机子上”,移动到的机子上必须同样安装SQL
SERVER
2000
数据库,而且服务器名称、数据库名称必须和原服务器名称、数据库名称相同,如果有数据库密码,必须保持一致。
下面是SQL数据库连接代码,请参考:
Public
conn
As
New
ADODB.Connection
conn.ConnectionString
=
"driver={SQL
Server};server=服务器名称;uid=sa;pwd=密码;database=数据库名称"
conn.Open
‘贰’ vb如何连接sql数据库,求源码
Dim conn As New ADODB.Connection '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行
Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用
Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段
1、装载数据库(不属于Recordset集合)
=============
Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$
'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码
FileName = App.Path & "\'数据库名'"
DbIp = "数据库地址"
DbName = "数据库名"
DbUser = "数据操作员用户名"
DbPw = "操作员密码"
'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量
'1)连接Access数据库:
'-------------------
CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileName & ";Jet OLEDB:Database Password=" & DbPw
'2)连接Oracle数据库:
'-------------------
CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"
'其中:
'PASSWORD: 密码
'User ID: 用户号
'Data Source: 数据库名
'Persist Security Info:
'Provider:
'3)连接VF的DBF库:
'----------------
CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName &
";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"
'4)连接SQL的数据库
'------------------
CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" &
DbIP
'也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & DbName & ";UID=" & DbUser & ";pwd=" & DbPw
Conn.Open cnstr '使用 Connection 集合的 Open 方法 与数据库建立连接
2、Recordset集合的常用方法
==========================
'1)打开一个表
'------------
Sql = "select * from 表名" 'SQL查询语句
Set rs = New ADODB.Recordset '新建一个实例
rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表
'注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容
'
'rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
'
'以下参数代表了这个可选值的含义
'0 = adOpenForwardOnly (默认值)打开仅向前类型游标。
'1 = adOpenKeyset 打开键集类型游标。
'2 = adOpenDynamic 打开动态类型游标。
'3 = adOpenStatic 打开静态类型游标。
'
'虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。因此需要进一步的对Open 方法进行完善
'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的
'以下参数代表了这个可选值的含义
'1 = adLockReadOnly (默认值)只读 — 不能改变数据。
'2 = adLockPessimistic 保守式锁定(逐个) — 在编辑时立即锁定数据源的记录。
'3 = adLockOptimistic 开放式锁定(逐个) — 只在调用 Update 方法时才锁定记录。
'4 = adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。
'
'2)读写数据
'----------
'增加一行记录并对新记录的内容进行修改并保存可以如下写法
rs.AddNew '增加一行记录
rs("...")="..." '数据读写操作
...
rs.UpDate '保存写入资料,如果使用只读权限,则不能使用这个方法
rs.Close '这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重
2、对数据进行筛选和排序
=======================
Sql = "select * from 表名" 'SQL查询语句
'以上为打开一个表的所有内容
Sql = "select top 50 * from 表名" 'SQL查询语句
'以上为只打开前50行的记录
Sql = "select top 50 列名1,列名2,列名5 from 表名" 'SQL查询语句
'以上为只打开前50行的记录,并且只打开第1、2、5列数据
Sql = "select * from 表名 where 列名1='" & 字段 & "'" 'SQL查询语句
'以上为一个简单的筛选,表示打开的内容必须符合[列名1='" & 字段 & "'"]的内容
'需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起
'而数字类型则不能用单引号括起
'另外SQL语句还支持通配符,例如 列名1 like '%" & 字段 & "%'" 表示包含[字段]
'在表达式中的匹配
'? _(下划线) 任何单一字符
'* or % 零个或多个字符
'# 任何单一数字(0 — 9)
'[charlist] 任何在字符表中的单一字符
'[!charlist] 任何不在字符表中的单一字符
'注:根据数据库的不同?、_和*、%的应用有所差别,比如SQL只使用% 和 _ 分别代表多个字符和单一字符
Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 ASC" '对查询结果进行升序排列
Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 DESC" '对查询结果进行降序排列
Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 DESC, ORDER BY 字段2 DESC" '对查询结果进行多维降序排列(速度奇慢,不推荐使用)
3、Recordset集合的常用属性方法
==============================
rs.BOF '是否游标在最上边
rs.EOF '是否游标在最下边
rs.RecordCount '记录集的行数(如果使用像前类型的游标,可能返回不准确)
rs.AddNew '新建一行记录
rs.Update '保存当前行被修改的记录
rs.Delete '删除当前行
rs.Close '关闭记录集
4、Fields集合的一些属性的解释
=============================
'以下为简写,正常情况需要rs.Fileds.。。。但是Fields属于Recordset的一个默认集合,因此可以省略
rs() '括号内可以是列名也可以是列的序号例如:rs("姓名")、rs(3) 都是是可以的
rs(3).Name '返回列名
rs(3).Type '返回列的类型
rs(3).Value '返回当前行的值
rs.Fields.Count '返回列数
‘叁’ 如何将VB和SQL数据库进行连接
Dim
oleDbConnection1
As
OleDb.OleDbConnection
Dim
strConnect
As
Sting="Provider=SQLOLEDB;Persist
Security
Info=False;
Data
Source=服务器名;Initial
Catalog=数据库名;User
ID=sa;Password=;"
oleDbConnection1=New
System.Data.OleDb.OleDbConnection(strConnect)
填上的服务器名
和数据库名
用户名
和密码
后用这个语句可以进行连接
‘肆’ VB怎么连接MSSql数据库
要连接SQL数据库有两种方法用ADODC或ADO。
方法一:
(ADODC)
首先须引用Projects-Components-Microsoft
ADO
Data
Controls
6.0
(OLEDB)。
之后在表单设置ADODC控件。然后Form_Load()输入以下代码:
Private
Sub
Form_Load()
ADODC1.ConnectionString
=
"Provider=SQLOLEDB;Password=密码;Persist
Security
Info=False;User
ID=用户名;Initial
Catalog=数据库名;Data
Source=服务器名"
ADODC1.CommandType
=
adCmdText
ADODC1.RecordSource
=
"select
*
from
表格名称"
ADODC1.Refresh
End
Sub
方法二:
(ADO)
首先须引用Projects-References-Microsoft
Active
X
Data
Objects
2.0
Library。
注意以下两段须写在程式最上面(Gerenal一般)中。
Dim
cn
As
New
ADODB.Connection
Dim
rs
As
New
ADODB.Recordset
Dim
SQL
As
String
然后在Form_Load()输入以下代码:
Private
Sub
Form_Load()
cn.ConnectionString
=
"Provider=SQLOLEDB;Password=密码;Persist
Security
Info=False;User
ID=用户名;Initial
Catalog=数据库名;Data
Source=服务器名"
cn.Open
If
rs.State
=
adStateOpen
Then
rs.Close
rs.CursorLocation
=
adUseClient
SQL
=
"select
*
from
表格名"
rs.Open
Trim$(SQL),
cn,
adOpenKeyset,
adLockPessimistic
End
Sub
‘伍’ vb怎么连接sql
在窗体上添加adodc控件
鼠标右键-adodc属性-在通用选项卡里,点生成,选for
SQL
Server驱动程序-下一步-连接选项卡里
1.输入服务器名称,2.使用Windows
NT
集成安全设置。3.选择一个数据库
点测试连接,看看是否成功。按确定
点记录源选项卡,命令类型选8,命令文本(SQL)写:select
*
from
table1
确定,就连接到SQL数据库的表table1了。
Private
Sub
Command1_Click()
If
Not
Adodc1.Recordset.EOF
Then
Text1.Text
=
Adodc1.Recordset.Fields("line1")
End
If
End
Sub
‘陆’ 如何用VB实现连接SQL数据库
一是:Public Function ConnectString() _
As String
ConnectString = "Provider=SQLOLEDB;User ID=用户;Password=密码;" & "Data Source=" + IP地址 + ";" & "Initial Catalog=数据库名" _
End Function
二是:
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误: " & _
Err.Description
Resume ExecuteSQL_Exit
End Function
以上复制到模块“Mole1”中
三是:声明:
Dim ADO1 As Recordset
Option Explicit
Dim MsgText As String
Dim TXTSQL As String
四是:连接
TXTSQL = "select * from 表名"
Set ADO1 = ExecuteSQL(TXTSQL, MsgText)
ADO1.Requery
五是显示字段
Set Text1.DataSource = ADO1
Text1.DataField = "字段"
Set MSHFlexGrid1.DataSource = ADO1
‘柒’ VB如何连接SQL数据库并登录
Option Explicit
Private Function Selectsql(SQL As String) As ADODB.Recordset '返回ADODB.Recordset对象
Dim ConnStr As String
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set Conn = New ADODB.Connection
'On Error GoTo MyErr:
ConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=登录数据库用户名(默认为sa);Password=登录数据库密码;Initial Catalog=数据库名;Data Source=服务器名(默认为:MERRYCHINA)" '这是连接SQL数据库的语句
Conn.Open ConnStr
rs.CursorLocation = adUseClient
rs.Open Trim$(SQL), Conn, adOpenDynamic, adLockOptimistic
Set Selectsql = rs
'Exit Function
'MyErr:
'Set rs = Nothing
'Set Conn = Nothing '释放相关的系统资源
'MsgBox Err.Description, vbInformation, "系统提示" '显示出错信息
End Function
Private Sub Form_Load()
Dim SQL As String
Dim rs As ADODB.Recordset
Dim X As Long
On Error GoTo Err_box
SQL = " select * from 用户表"
Set rs = Selectsql(SQL)
If rs.RecordCount > 0 Then
rs.MoveFirst
For X = 1 To rs.RecordCount
Combo1.AddItem rs.Fields("用户名").Value
rs.MoveNext
Next X
Combo1.ListIndex = 0
End If
rs.Close
Exit Sub
Err_box:
End Sub
Private Sub Command1_Click()
Dim SQL As String
Dim rs As ADODB.Recordset
If Text1.Text = "" Then
MsgBox "请输入口令!", 16
Text1.SetFocus
Exit Sub
End If
If Combo1.Text = "" Then
MsgBox "请选择登录用户!", 16
Combo1.SetFocus
Exit Sub
End If
SQL = "SELECT * FROM 用户表 WHERE 用户名='" & Combo1.Text & "' AND 密码='" & Text1.Text & "' "
Set rs = Selectsql(SQL)
If rs.RecordCount > 0 Then
Form1.Show '想要打开的主窗体
MsgBox "恭喜兄弟,登录成功!", 64, "提示"
Unload Me
Else
MsgBox "口令不对,请重新输入!", 16, "提示"
Text1.SetFocus
End If
End Sub
'**********************************************************************
'说明:1) 在工程中引用Microsoft ActiveX Data Objects 2.8 Library ,其它版本也行如:2.0
' 2) 在窗体中加Texe1.text(文本框控件),Combo1.text(组合框控件),Command1(命令按钮)各一个
' 3) 在SQL Server2000中创建数据库,新建表"用户表",表中包含"ID,姓名,密码"等字段,然后将以上代码复制,OK搞定
4) 以上方式无需加载ADO控件,方便!
‘捌’ vb如何和SQL连接起来,告急
Vb6.0连数据库
1.1 ADO(ActiveX Data Object)连接方式
在连接数据库前,首先要在Visual Basic 6.0菜单中“工程”—>“引用”中选择Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library这两个组件。
实例:以建立登陆系统为例,介绍无源数据库连接。在Microsoft SQL Server 2000 中建立一个Student 的数据库,在Student数据库中建立login_user(name,password)的数据表,Microsoft SQL Server服务器的名为data_server。代码如下:
Option Explicit
Public LoginSucceeded As Boolean
'引用Microsoft ActiveX Data Objects 2.6 Library
'定义连接对象和记录集
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
'对取消按钮单击事件的响应
Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
Me.Hide
End Sub
'对登录按钮单击事件的响应
Private Sub cmdOK_Click()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
'建立无源数据库连接
conn.ConnectionString="driver={sql server};server=data_server;uid=sa;pwd=;Database=student"
conn.ConnectionTimeout = 50
conn.Open
Dim str As String
'连接连接对象
Set rs.ActiveConnection = conn
'设置游标类型
rs.CursorType = adOpenDynamic
If Trim(txtUserName.Text = "") Then
MsgBox "用户名不能为空,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'设置查询字符串
str = "select * from login_user where name ='" & Trim(txtUserName.Text) & "'"
rs.Open str
If rs.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'登录成功,连接主窗口
If (Trim(txtPassword.Text) = Trim(rs.Fields("password"))) Then
LoginSucceeded = True
Me.Hide
main.Show
Else
MsgBox "密码不正确,请重输入密码!", , "警告"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End If
End If
End Sub
2 通过配置ODBC环境,进行数据源的注册,对数据库进行连接、访问和操作。
2.1 ODBC数据源分为以下三类:
(1) 用户DSN:只有创建数据源的用户才可以使用他们自己创建的数据源,而且只能在当前的计算机上使用。
(2) 系统DSN:任何使用你的计算机的用户和程序都可以使用的DSN。
(3) 文件DSN:除了具有系统DSN的功能之外,还能被其它用户在其它计算机上使用。
2.2 创建ODBC数据源的步骤
(1) 启动控制面板。
(2) 双击ODBC图标,启动ODBC数据源。
(3) 换到“用户DSN”标签,单击“添加”。选择SQLServer作为数据源的驱动程序。
(4) 为数据源命名,按提示操作即可创建ODBC数据源。
2.3 创建数据库连接
创建数据源是进行有源数据库连接的第一步,下面同样是运用ADO对象模型的主要元素Connection(连接)进行源数据库连接。
ConnectionString是Connection对象的属性名称,提供数据提供者或服务提供者打开到数据源的连接所需要的特定信息,包括Database、DSN、UID等。
(1) Database:字符串表达式,指定服务器上的数据库名称。
(2) UID:字符串表达式,为ODBC数据源指定用户标识(用户账号名)。
(3) PWD:字符串表达式,为ODBC数据源指定用户口令。
(4) DSN:字符串表达式,指定连接的ODBC 数据源名称。
利用已配置好的ODBC数据源进行连接。
实例:以建立查询系统为例,介绍有源数据库连接。创建ODBC数据源名称为stud,通过ADO与数据库student进行连接,代码如下:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "dsn=stud;uid=sa;pwd=;database=student"
conn.Open
Dim str As String
Set rs.ActiveConnection = conn
rs.CursorType = adOpenDynamic
str = "select * from login_user"
rs.Open str
txtUserName.Text = rs.Fields("name")
txtPassword.Text = rs.Fields("password")
End Sub