求VB编程连接access数据库的源代码

求VB编程连接access数据库的源代码,第1张

要使程序能够访问数据库必须通过ADO技术实现,下面就LZ所提供的例子作详细讲解:

(调用入口,如单击按钮事件发生时。注:vb中变量不区分大小写)

Dim conn as new adodbconnection '定义conn为新的数据库连接对象并分配内存

Connstr="Provider=microsoftjetoledb40;data source=" & apppath & "\libmdb" '在这里编写一个用于与告知计算机连接的数据库的连接串,其中apppath指该应用程序/工程所在路径,所以必须将Access的数据库文件放在应用程序/工程所在路径的同一个目录下

Connopen Connstr,"admin","",-1 '启动conn的连接,其中参数如下:连接串,连接用户名,连接密码,连接方式(这里的-1是指默认方式)

Dim rs as new adodbrecordset '定义rs为新的数据库记录集对象并分配内存

Sqlstr="select ab from results" '这里是放入sql语句的地方,将LZ的实际sql语句替换到我填入的sql语句中

Rsopen Sqlstr,Conn,3,2,-1 '打开rs记录集查询结果,其中参数如下:sql语句,活动的连接串(即现在打开中的连接串),静态集(3表示静态集),悲观锁(2表示悲观锁),打开方式(-1表示默认方式)

这样就完成了查询的工作,接下来是提取从查询中值的 *** 作,由于我对LZ想要得到的信息不是很清晰,所以在这里就停下问一下您到底是要达到什么样的查询效果,需要的是一个什么样的值,再采取合适的方法将其提取出来是比较合适的

第一,买个PHP的空间,要带送MYsql数据库的(比如老品牌主机laopinpainet),然后开通空间后,就会得到赠送的数据库。

第二 把源码上传到网站空间上,按源码要求 *** 作。如果是需要安装的,就直接安装程序,然后填写提示要填写的数据库的信息,比如IP 用户名密码。就行了。

第三,如果是有数据库需要恢复的,把数据传到空间让,联系空间商帮你恢复一下数据到你的数据库就搞定了。

数据库连接(Connection)

数据库连接

获取数据库连接有两种方法,一种是通过驱动程序管理器DriverManager类,另一种则是使用DataSource接口。这两种方法都提供了了一个getConnection方法,用户可以在程序中对它们进行相应处理后调用这个方法来返回数据库连接。

• DriverManager类

• DataSource接口

• Connection接口

• JDBC URL

jdbc:<subprotocol>:<subname>

• 驱动程序注册方法

(1)调用ClassforName方法

(2)设置jdbcdrivers系统属性

• DriverManager方法

DriverManager类中的所有方法都是静态方法,所以使用DriverManager类的方法时,不必生成实例。

DriverManager

• getConnection方法

作用是用于获取数据库连接,原型如下:

public static Connection getConnection(String url)

throws SQLException;

public static Connection getConnection(String url, String user, String password)

throws SQLException;

public static Connection getConnection(String url, Properties info)

throws SQLException;

• 使用DriverManager的getConnetion方法

ClassforName("sunjdbcodbcJdbcOdbcDriver");

Connection conn = DriverManagergetConnection

("jdbc:odbc:sqlserver", "sa", "sa");

• 使用设置jdbcdrivers系统属性的方法

java -Djdbcdrivers=sunjdbcodbcJdbcOdbcDriver testjava

DataSource 接口

……

//从上下文中查找数据源,并获取数据库连接

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctxlookup("sqlserver");

Connection conn = dsgetConnection();

//查询数据库中所有记录

Statement stmt = conncreateStatement();

ResultSet rs = stmtexecuteQuery("SELECT FROM student");

……

Connection 接口

Connection接口代表了已经建立的数据库连接,它是整个JDBC的核心内容。Connnection接口中的方法按照它们所实现的功能,可以分为三类:

• 生成数据库语句

• 管理数据库事务

• 获取数据库信息

生成数据库语句

JDBC将数据库语句分成三种类型 :

• 生成Statement 语句 :

ConnectioncreateStatement()

• 生成PreparedStatement 语句 :

Connection prepareStatement()

• 生成CallableStatement 语句 :

Connection prepareCall ()

管理数据库事务

• 默认情况下,JDBC将一条数据库语句视为一个完整的事务。可以关掉默认事务管理:

public void setAutoCommit(Boolean autoCommit) throws SQLException;

将autoCommit的值设置为false,就关掉了自动事务管理模式

• 在执行完事务后,应提交事务:

public void commit() throws SQLException;

• 可以取消事务:

public void rollback() throws SQLException;

第二讲 第四部分

数据库语句

数据库语句

JDBC数据库语句共有三种类型:

• Statement:

Statement语句主要用于嵌入一般的SQL语句,包括查询、更新、插入和删除等等。

• PreparedStatement:

PreparedStatement语句称为准备语句,它是将SQL语句中的某些参数暂不指定,而等到执行时在统一指定。

• CallableStatement:

CallableStatement用于执行数据库的存储过程。

Statement 语句

• executeQuery方法

• executeUpdate方法

• execute方法

• close方法

executeQuery方法

• executeQuery方法主要用于执行产生单个结果集的SQL查询语句(QL),即SELECT语句。executeQuery方法的原型如下所示:

• public ResultSet executeQuery(String sql) throws SQLException;

executeUpdate方法

• executeUpdate方法主要用于执行 INSERT、UPDATE、DELETE语句,即SQL的数据 *** 作语句(DML)

• executeUpdate方法也可以执行类似于CREATE TABLE和DROP TABLE语句的SQL数据定义语言(DDL)语句

• executeUpdate方法的返回值是一个整数,指示受影响的行数(即更新计数)。而对于CREATE TABLE 或 DROP TABLE等并不 *** 作特定行的语句,executeUpdate的返回值总为零。

execute方法

execute方法用于执行:

• 返回多个结果集

• 多个更新计数

• 或二者组合的语句

execute方法

• 返回多个结果集:首先要调用getResultSet方法获得第一个结果集,然后调用适当的getter方法获取其中的值。要获得第二个结果集,需要先调用getMoreResults方法,然后再调用getResultSet方法。

• 返回多个更新计数:首先要调用getUpdateCount方法获得第一更新计数。然后调用getMoreResults,并再次调用getUpdateCount获得后面的更新计数。

• 不知道返回内容:如果结果是ResultSet对象,则execute方法返回true;如果结果是int类型,则意味着结果是更新计数或执行的语句是DDL命令。

execute方法

为了说明如果处理execute方法返回的结果,下面举一个代码例子:

stmtexecute(query);

while (true) {

int row = stmtgetUpdateCount();

//如果是更新计数

if (row > 0) {

Systemoutprintln("更新的行数是:" + row);

stmtgetMoreResults();

continue;

}

execute方法

//如果是DDL命令或0个更新

if (row == 0) {

Systemoutprintln("没有更新,或SQL语句是一条DDL语句!");

stmtgetMoreResults();

continue;

}

//如果是一个结果集

ResultSet rs = stmtgetResultSet;

if (rs != null) {

while (rsnext()) {

// 处理结果集

}

stmtgetMoreResults();

continue;

}

break;

}

PreparedStatement 语句

登录一个网站或BBS时 :

• 使用Statement语句

Statement stmt = conncreateStatement();

ResultSet rs = stmtexecuteQuery

(“SELECT password FROM userinfo

WHERE id=userId");

• 使用PreparedStatement语句

PreparedStatement pstmt=connprepareStatement

(“SELECT password FROM userinfo

WHERE id=");

pstmtsetString(1, userId);

PreparedStatement语句

• 常用的setter方法

public void setBoolean(int parameterIndex, boolean x) throws SQLException;

public void setByte(int parameterIndex, byte x) throws SQLException;

public void setShort(int parameterIndex, short x) throws SQLException;

public void setInt(int parameterIndex,int x) throws SQLException;

public void setLong(int parameterIndex, long x) throws SQLException;

public void setFloat(int parameterIndex, float x) throws SQLException;

public void setDouble(int parameterIndex, double x) throws SQLException;

public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;

public void setString(int parameterIndex, String x) throws SQLException;

public void setBytes(int parameterIndex, byte[] x) throws SQLException;

public void setDate(int parameterIndex, Date x) throws SQLException;

public void setTime(int parameterIndex, Time x) hrows SQLException;

public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException;

PreparedStatement语句

• PreparedStatement接口是由Statement接口扩展而来的,重写了executeQuery方法、executeUpdate方法和execute 方法

• public ResultSet executeQuery() throws SQLException

• public int executeUpdate() throws SQLException

• public boolean execute() throws SQLException

CallableStatement语句

• CallableStatement语句是由Connection接口的prepareCall方法创建的,创建时需要传入字符串参数,参数的形式为:

• {call procedure_name[(, , )]}

• { = call procedure_name[(, , )]}

• {call procedure_name}

CallableStatement语句

• 其中的问号是参数占位符,参数共有两种:

• IN参数

• OUT参数

• IN参数使用setter方法来设置

• OUT参数则使用registerOutParameter方法来设置

CallableStatement 语句

CallableStatement cstmt = conprepareCall

("{call getTestData(, )}");

cstmtregisterOutParameter

(1, javasqlTypesTINYINT);

cstmtregisterOutParameter

(2, javasqlTypesDECIMAL, 3);

cstmtexecuteQuery();

byte x = cstmtgetByte(1);

javamathBigDecimal n =

cstmtgetBigDecimal(2, 3);

第二讲 第五部分

结 果 集

结果集

• JDBC为了方便处理查询结果,又专门定义了一个接口,这个接口就是ResultSet接口。ResultSet接口提供了可以访问数据库查询结果的方法,通常称这个接口所指向的对象为结果集。

• 有两种方法得到结果集,一种是直接执行查询语句,将结果存储在结果集对象上;另一种是不存储返回结果,而在需要时调用数据库语句的getResultSet方法来返回结果集

结果集

• 结果集指针

由于返回的结果集可能包含多条数据记录,因此ResultSet 接口提供了对结果集的所有数据记录轮询的方法。结果集自动维护了一个指向当前数据记录的指针,初始时这个指针是指向第一行的前一个位置。 next 方法就是用于向前移动指针的

结果集

• 结果集属性

默认情况下,结果集是一个不可更新集,并且结果集的指针也只能向前移动。也就是说,在得到了一个结果集之后,用户只能按照从第一条记录到最后一条记录的顺序依次向后读取,而不能跳到任意条记录上,也不能返回到前面的记录。不仅如此,结果集的这种轮询只能进行一次,而不能再将指针重置到初始位置进行多次轮询

结果集

• 结果集属性

类型

并发性

有效性

• 属性的设置是在生成数据库语句时通过向生成方法传入相应的参数设定的,而当结果集已经返回时就不能够再改变它的属性了。

结果集生成Statement语句共有三种方法

public Statement createStatement() throws SQLException;

public Statement createStatement

(int resultSetType, int resultSetConcurrency)

throws SQLException;

public Statement createStatement

(int resultSetType, int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

结果集

• 生成PreparedStatement语句共有六种方法

public PreparedStatement prepareStatement(String sql) throws SQLException;

public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int[] columnIndexes)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int resultSetType,

int resultSetConcurrency)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

public PreparedStatement prepareStatement(String sql String[] columnNames)

throws SQLException;

结果集

• 生成CallableStatement语句共有三种方法

public CallableStatement prepareCall(String sql)

throws SQLException;

public CallableStatement prepareCall

(String sql, int resultSetType,

int resultSetConcurrency)

throws SQLException;

public CallableStatement prepareCall

(String sql, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

结果集

结果集类型

• 结果集的类型共有三种,TYPE_FORWARD_ONLY类型的结果集只能向前移动指针,而TYPE_SCROLL_INSENSITIVE类型和TYPE_SCROLL_SENSITIVE类型的结果集则可以任意移动指针。后两种类型的区别在于,前者对来自其它处的修改不敏感(静态),而后者则对于别人的修改敏感(动态视图)。

结果集

结果集类型

• 对于可以任意移动指针的结果集,可以用来移动指针的方法包括:

• next 和previous :

• absolute 和relative :参数可正可负

• afterLast 、beforeFirst 、last 和first :

结果集

结果集并发性

• 结果集的并发性共有两种,CONCUR_READ_ONLY的结果集是只读而不可更新的;而CONCUR_UPDATABLE的结果集则是可以通过update方法进行更新的。

• ResultSet接口提供了一组update方法,用于更新结果集中的数据。这些方法与PreparedStatement接口中定义的setter方法一样,也是与类型相对应的。所有的update方法都以update开头 。

• 所有的update方法都有两个参数,第一个参数用于指定更新的列,它可以是列名称也可以是列的序号;第二个参数则表示将要更新列的值。

结果集

结果集并发性

• Statement stmt = conncreateStatement

• (ResultSetTYPE_SCROLL_SENSITIVE, ResultSetCONCUR_UPDATABLE);

• ResultSet rs = stmtexecuteQuery("SELECT FROM student " +

• "WHERE grade=2 AND math>60 AND physics>60 AND " +

• "chemistry>60 AND english>60 AND chinese>60");

• while(rsnext()){

• rsupdateString("grade", "3");

• rsupdateRow();

• }

结果集

结果集有效性

• 结果集的有效性是指在调用了Connection 接口的commit 方法后,结果集是否自动关闭。所以它只有两个可选值,即HOLD_CURSORS_OVER_COMMIT 和CLOSE_CURSORS_AT_COMMIT 。前者表示调用commit 方法之后,结果集不关闭;而后者则表示关闭结果集。

结果结果集

• 结果集的getter方法

ResultSet接口还提供了一组getter方法,用于返回当前记录的属性值。它们都是以get开头的,后接数据类型。比如,如果要返回一个float类型的列值,则应调用getFloat方法。每一种类型的getter方法都有两种形式,它们的名称相同而参数不同。这两种形式的getter方法都只有一个参数,第一种形式的getter方法参数是String类型的,用于指定列的名称;另外一种形式的getter方法参数则是int类型的,用于指定列的序号。

我就弄的用户登入的代码吧这个挺简单的

这是题目:

用户登陆验证:

1创建数据库Test,并新建用户表users

字段包含:username varchar(20) not null

userpwd varchar(20) not null

在JBUILDER中编写Long类,实现登陆界面,并在用户输入用户名和密码后,

完成按纽的单击事件,对用户输入的数据进行验证,

(需要严整数据是否为空,密码长度必须是15位),

并实现与数据库的连接,将用户输入的用户名密码与表中的记录比较,

若用户名正确且密码正确,d出提示框告知登陆成功,否则登陆失败。

这是代码:

//连接数据库

boolean isLogin(String name,String pwd){

boolean flag=false;

Connection conn=null;

PreparedStatement pst=null;

ResultSet rs=null;

//加载驱动

try {

ClassforName("sunjdbcodbcJdbcOdbcDriver");

} catch (ClassNotFoundException ex) {

exprintStackTrace();

}

//连接数据库

try {

conn=DriverManagergetConnection("jdbc:odbc:login");

String sql="select from [user] where username= and userpwd=";

pst=connprepareStatement(sql);

pstsetString(1,name);

pstsetString(2,pwd);

rs=pstexecuteQuery();

if(rsnext())

flag=true;

} catch (Exception ex) {

exprintStackTrace();

}finally{

try {

connclose();

} catch (Exception ex) {

exprintStackTrace();

}

}

return flag;

}

//验证方法

public void jButton1_actionPerformed(ActionEvent e) {

String name=jTextField1getText();

String pwd=jTextField2getText();

//错误处理

if(nameequals("")||pwdequals(""))

JOptionPaneshowMessageDialog(this,"请输入完整的信息");

else {

if(isLogin(name,pwd))

JOptionPaneshowMessageDialog(this,"登陆成功");

else

JOptionPaneshowMessageDialog(this,"用户名或密码错误");

}

}

}

这是在事件里写的,

原则是写在任何地方都可以,主要用来连接字符串。写法如下:

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

using SystemData;//首先导入命名空间

using SystemDataSqlClient;//首先导入命名空间

namespace EJ_MarketModelCommon

{

class DataBase

{

SqlConnection con = null;

public SqlConnection GetCon()

if (con == null)

{

con=new

SqlConnection("server=>

}

if (conState == ConnectionStateClosed)

{

conOpen();

}

return con;

}

//end GetCon public void GetClose()

{

if (conState == ConnectionStateOpen)

{

conClose();

}

}//end GetClose

}//end class

}//end namespace

扩展资料:

连接数据库、 *** 作数据库,本质是利用数据库提供的动态链接库MySqlDatadll进行 *** 作。MySqlDatadll提供以下8个类:

MySqlConnection: 连接MySQL服务器数据库。

MySqlCommand:执行一条sql语句。

MySqlDataReader: 包含sql语句执行的结果,并提供一个方法从结果中阅读一行。

MySqlTransaction: 代表一个SQL事务在一个MySQL数据库。

MySqlException: MySQL报错时返回的Exception。

MySqlCommandBuilder: Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database

MySqlDataAdapter: Represents a set of data commands and a database connection that are used to fill a data set and update a MySQL database

MySqlHelper: Helper class that makes it easier to work with the provider

推荐用SQL Management Studio,把数据库文件拷贝到SQL的安装目录X:\Program Files\Microsoft SQL Server\MSSQL10_50MSSQLSERVER\MSSQL\DATA文件夹下,然后启动SQL Management Studio,登陆后右键附加即可。

抄一段使用ODBC API连接的代码:

#include <windowsh>

#include "stdioh"

#include<sqlh>

#include<sqlexth>

#include<sqltypesh>

#include<odbcssh>

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

SQLHENV m_hEnv;

SQLHDBC m_hDbc;

SQLRETURN m_sr;

m_sr=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&m_hEnv);

if(m_sr!=SQL_SUCCESS)

{ MessageBox(NULL,"分配环境句柄失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

m_sr=SQLSetEnvAttr(m_hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,0);

if(m_sr!=SQL_SUCCESS)

{ MessageBox(NULL,"设置环境属性失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

m_sr=SQLAllocHandle(SQL_HANDLE_DBC,m_hEnv,&m_hDbc);

if(m_sr!=SQL_SUCCESS)

{ MessageBox(NULL,"分配连接句柄失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

m_sr=SQLSetConnectAttr(m_hDbc,SQL_ATTR_LOGIN_TIMEOUT,(void)5,0);

if(m_sr!=SQL_SUCCESS)

{ MessageBox(NULL,"设置连接属性失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

m_sr=SQLConnect(m_hDbc,(SQLCHAR)"LocalServer",SQL_NTS,(SQLCHAR) "sa",SQL_NTS,(SQLCHAR) "123456",SQL_NTS);

if(SQL_SUCCEEDED(m_sr))

{ MessageBox(NULL,"连接数据源失败","错误",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

return 0;

}

以上就是关于求VB编程连接access数据库的源代码全部的内容,包括:求VB编程连接access数据库的源代码、mysql数据库怎么链接到php源码上、(高分)急求连接数据库的JAVA学生信息管理系统源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9778869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存