dbc-odbc桥连的方式来操作sql server数据库


/**

 * 使用JDBC-ODBC桥连方式操作数据库 db中的emp,dept表

 * 1.配置数据源

 * 2.在程序中连接数据源

 */

package com.db;

import java.sql.*;

public class db1 {

    public static void main(String[] args) {

        Connection ct = null;

        Statement sm = null;

        ResultSet rs = null;

        try {

            //1.加载驱动(把需要的驱动程序加入内存)

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            //2.得到连接(指定连接哪个数据源,用户和密码)

            //配置数据源时,选择Windows NT验证,则不需要账号密码

            ct = DriverManager.getConnection("jdbc:odbc:mytest");

            

            //3.创建Statement或者PreparedStatement

            //Statement用处是:发送sql语句到数据库

            sm = ct.createStatement();

            

            //4.执行(crud,创建数据库,备份数据库,删除数据库。。。)

            

            //添加一条数据到dept表

            //executeUpdate可以执行 cud操作(添加,删除,修改)

//            String sql = "insert into dept values(50, '保安部', '北京')";

//            int res = sm.executeUpdate(sql);

//            if(res == 1){

//                System.out.println("加入一条语句");

//            } else {

//                System.out.println("添加失败");

//            }

            

            //从dept删除一条记录

//            String sql = "delete from dept where deptno='50'";

//            int res = sm.executeUpdate(sql);

//            

//            if(res == 1){

//                System.out.println("delete.");

//            } else {

//                System.out.println("failure");

//            }

            

            //修改deptno=40的loc改为beijing

//            String sql = "update dept set loc = 'beijing' where deptno='40'";

//            int res = sm.executeUpdate(sql);

//            if(res == 1){

//                System.out.println("update.");

//            } else {

//                System.out.println("failure");

//            }

            

            //显示所有的部门

            //ResultSet结果集

            String sql = "select * from dept";

            rs = sm.executeQuery(sql);

            

            //rs指向结果集的第一行的前一行

            while(rs.next()){

                //取出第一行

                int deptno = rs.getInt(1);

                String dname = rs.getString(2);

                String loc = rs.getString(3);

                System.out.println(deptno + " " + dname + " " + loc);

            }

            

            

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            //关闭资源

            //谁后创建,谁先关闭

            try {

                if(rs != null){

                    rs.close();

                }

                if(sm != null){

                    sm.close();

                }

                if(ct != null){

                    ct.close();

                }

            } catch (Exception e2) {

                e2.printStackTrace();

            }

        }

    }

}
 

好的,下面是使用ODBC在C++中连接SQL Server数据库并进行增删查改操作的基本步骤: 1. 引入头文件:您需要在代码中引入以下头文件: ``` #include <windows.h> #include <sql.h> #include <sqlext.h> ``` 2. 连接到数据库:使用ODBC API连接到SQL Server数据库,例如: ``` SQLHANDLE henv, hdbc; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); char* dsn = "your_dsn"; char* user = "your_username"; char* pass = "your_password"; SQLConnect(hdbc, (SQLCHAR*)dsn, SQL_NTS, (SQLCHAR*)user, SQL_NTS, (SQLCHAR*)pass, SQL_NTS); ``` 在这个例子中,我们使用SQLAllocHandle函数分配了环境句柄和连接句柄,然后使用SQLSetEnvAttr函数设置ODBC版本,最后使用SQLConnect函数连接到数据库。 3. 执行SQL语句:使用ODBC API执行SQL语句,例如: ``` char* sql = "SELECT * FROM table_name"; SQLHANDLE hstmt; SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLExecDirect(hstmt, (SQLCHAR*)sql, SQL_NTS); ``` 在这个例子中,我们使用SQLAllocHandle函数分配了语句句柄,然后使用SQLExecDirect函数执行SQL语句。 4. 处理结果集:如果您执行的SQL语句返回一个结果集,您需要使用ODBC API来处理该结果集,例如: ``` while (SQLFetch(hstmt) == SQL_SUCCESS) { int id, value; SQLGetData(hstmt, 1, SQL_C_LONG, &id, 0, NULL); SQLGetData(hstmt, 2, SQL_C_LONG, &value, 0, NULL); // 处理结果 } ``` 在这个例子中,我们使用SQLFetch函数获取结果集中的行,然后使用SQLGetData函数获取每个行的列的数据。 5. 实现增删查改:您可以将上述步骤组合起来,实现一个简单的增删查改功能,例如: ``` // 查询数据 char* sql = "SELECT * FROM table_name WHERE id = ?"; SQLHANDLE hstmt; SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS); int id = 1; SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &id, 0, NULL); SQLExecute(hstmt); int value; if (SQLFetch(hstmt) == SQL_SUCCESS) { SQLGetData(hstmt, 2, SQL_C_LONG, &value, 0, NULL); } // 插入数据 sql = "INSERT INTO table_name (id, value) VALUES (?, ?)"; SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS); id = 2; value = 10; SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &id, 0, NULL); SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &value, 0, NULL); SQLExecute(hstmt); // 更新数据 sql = "UPDATE table_name SET value = ? WHERE id = ?"; SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS); value = 20; id = 2; SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &value, 0, NULL); SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &id, 0, NULL); SQLExecute(hstmt); // 删除数据 sql = "DELETE FROM table_name WHERE id = ?"; SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS); id = 2; SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &id, 0, NULL); SQLExecute(hstmt); ``` 在这个例子中,我们使用了一个SELECT语句来查找需要操作的数据,然后使用INSERT、UPDATE和DELETE语句进行了相应的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值