① 打開的鏈接執行sql語句與execute
<!--#include file="conn.inc"-->
conn.inc這個文文件裏已經寫了連接資料庫的字元串並且已經建立並打開了連接,裡面有個conn.open這就是打開.裡面的set conn=server.creatobject("adodb.connection")是建立資料庫連接的意思
conn.open就是打開,資料庫連接字元串我想也是寫好了的
<%
sql="update count set count=count+1"
conn.execute sql
%>
上面說明資料庫裏有一個叫count的表表裏有一個欄位叫count它用來計錄這是第幾次訪問這一頁,當打開這一頁的時候,我們讓count加1,並更新資料庫
count1.asp
要顯示訪問量的結果,所以可以用
<%
set rs=conn.execute("select [count] from [count]")
response.write("當前訪問量為:"&rs("count"))
%>
② ASP 怎麼連接SQL資料庫
ASP與SQL資料庫連接語句具體如下:
Set conn = Server.CreateObject("ADODB.Connection")
connstr = "provider=Sqloledb;server=伺服器名;uid=用戶名;pwd=密碼;database=資料庫名"
conn.Open connstr
If Err Then
err.Clear
Set conn = Nothing
Response.Write "資料庫連接出錯,請檢查連接字串"
Response.End
(2)北京神州資料庫連接的sql語句擴展閱讀:
SQL常用命令使用方法:
(1) 數據記錄篩選:
sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 數據表 where 欄位名 like 『%欄位值%『 order by 欄位名 "
sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 "
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 數據表" (將數據表所有記錄刪除)
③ c#怎麼和sql資料庫連接
1、打開Visual
Studio
2008工具,點擊文件菜單,選擇新建下面的項目選項,如下圖所示。
2、在彈出的新建項目界面,選擇控制台程序,然後點擊確定按鈕,如下圖所示。
3、在Program.cs界面中引入SqlClient命名空間,這個空間里包含了所有的操作SQL
SERVER的功能,如下圖所示。
4、接下來實例化SqlConnection,然後通過SqlConnection實例創建一個連接字元串,如下圖所示。
5、然後通過Open方法連接SQL
SERVER,並且輸出當前連接的資料庫信息,如下圖所示。
6、然後運行控制台程序,會在輸出窗口中看到連接的資料庫信息已列印出來了,如下圖所示。
7、在操作完SQL
SERVER的時候,一定要通過Close方法將資料庫關閉,如下圖所示。
④ 打開報稅軟體時出現:資料庫連接錯誤:SQL錯誤信息(htcts):nodata was foundt satisty the request)
找專業人員查看軟體的配置文件。重新配置資料庫連接。
⑤ 如何用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
⑥ 怎麼用java連接SQL資料庫
如何用java連接sql的資料庫 1、java資料庫操作基本流程 : java資料庫操作基本流程:取得資料庫連接 - 執行sql語句 - 處理執行結果 - 釋放資料庫連接
2、幾個常用的重要技巧:可滾動、更新的記錄集 、 批量更新 、事務處理1、取得資料庫連接1)用DriverManager取資料庫連接例子:String className,url,uid,pwd;
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
uid = "system";
pwd = "manager";
Class.forName(className);
Connection cn = DriverManager.getConnection(url,uid,pwd);2)用jndi(java的命名和目錄服務)方式例子String jndi = "jdbc/db";
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup(jndi);
Connection cn = ds.getConnection(); //多用於jsp中2、執行sql語句1)用Statement來執行sql語句String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 執行數據查詢語句(select)
sm.executeUpdate(sql); // 執行數據更新語句(delete、update、insert、drop等)statement.close();2)用PreparedStatement來執行sql語句String sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); // 查詢
int c = ps.executeUpdate(); // 更新3、處理執行結果查詢語句,返回記錄集ResultSet。更新語句,返回數字,表示該更新影響的記錄數。ResultSet的方法:1、next(),將游標往後移動一行,如果成功返回true;否則返回false。2、getInt("id")或getSting("name"),返回當前游標下某個欄位的值。3、釋放連接。cn.close();一般,先關閉ResultSet,然後關閉Statement(或者PreparedStatement);最後關閉Connection可滾動、更新的記錄集1、創建可滾動、更新的StatementStatement sm=cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,
ResultSet.CONCUR_READ_ONLY);該Statement取得的ResultSet就是可滾動的2、創建PreparedStatement時指定參數PreparedStatemet ps=cn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet.absolute(9000);批量更新1、StatementStatement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()一個Statement對象,可以執行多個sql語句以後,批量更新。這多個語句可以是delete、update、insert等或兼有2、 ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch();一個PreparedStatement,可以把一個sql語句,變換參數多次執行,一次更新。事務的處理1、關閉Connection的自動提交cn.setAutoCommit(false);2、執行一系列sql語句要點:執行每一個新的sql語句前,上一次執行sql語句的Statement(或者PreparedStatemet)必須先closeStatement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();3、提交cn.commit();
⑦ java程序連接sql server2008資料庫:求給一個具體的代碼,和過程。
連接資料庫
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestDB {
public static void main(String[] args) {
try {
// 1.注冊驅動
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("注冊驅動成功");
String url = ""jdbc:microsoft.sqlserver://127.0.0.1:1433;DatabaseName="; //資料庫IP,埠,資料庫名
String username = "";
String password = "";
// 載入驅動並獲取資料庫連接對象
Connection connection = DriverManager.getConnection(url, username,
password);
System.out.println("連接資料庫成功!");
// 創建Statement對象
Statement stmt = connection.createStatement();
// SQL語句
String sql = "insert into student(id,name,age,email,address) values(1,'tom',23,'[email protected]','England') ";
int rows = stmt.executeUpdate(sql);
if (rows > 0) {
System.out.println("插入成功!");
}
// 釋放資源
stmt.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
預編譯的資料庫處理
public class ConnectionManager{
public static final String DRIVER_CLASS ="";
public static final String URL = "";
public static final String USERNAME = "";
public static final String PASSWORD = "";
//獲取連接對象
public static Connection getConnection(){
Connection conn = null;
Class.forName(DRIVER_CLASS);
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
return conn;
}
public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
try{
if(rs!=null){
rs.close();
rs = null;
}
if(stmt!=null){
stmt.close();
stmt = null;
}
if(conn!=null){
conn.close();
conn=null;
}
}
}
}
public class DBOperator{
public int executeUpdate(String sql,Object[] params){
int rows = 0;
Connection connn = ConnectionManager.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);//下標從1開始
}
}
rows = pstmt.executeUpdate();
ConnectionManager.closeAll(null,pstmt,conn);
return rows;
}
public ResultSet executeQuery(String sql,Object[] params){
Connetion conn = ConnectionManager.getConnection();
if(params!=null){
for(int i= 0;i<params.length;i++){
pstmt.setObject(i+1,params(i));
}
}
rs=pstmt.executeQuery();
ConnectionManager.closeAll(rs,pstmt,conn);
return rs;
}
}
/**
*statement連接資料庫
*/
public class TestOperatorGrade{
private static void updateGrade(int id,String name,String description){
Class.forName();//注冊驅動
Connection conn = DirverManager.getConnection("","","");
Statement stmt = conn.createStament();
String sql = "UPDATE grades set name = '"+name+"',description='"+description+"'WHere id="+id;
int rows = stmt.executeUpdate(sql);
}
}
這是java 程序的代碼
⑧ myeclipse鏈接sql資料庫的類的代碼怎麼寫
前期准備工作,安好JDK,MyEclipse。
下載JDBC驅動mysql-connector-java-5.0.5-bin.jar導入到工程中去
1、工程(右鍵)--buildpath--configurebuildpath--addexternaljars。
2、也可以加到classpath中去,具體如下:「我的電腦」->「屬性」->「高級」->「環境變數」,在系統變數那裡編輯classpath,將D:mysql-connector-java-5.0.5mysql-connector-java-5.0.5-bin.jar加到最後,在加這個字元串前要加「;」,以與前一個classpath區分開,然後確定。
測試代碼:所用驅動mysql-connector-java-5.0-nightly-20071116-bin.jar
程序中引用必要的包:importjava.sql.*;//它包含有操作資料庫的各個類與介面
1、載入合適的JDBC驅動程序
Class.forName(Driver);
MySQL驅動程序:com.mysql.jdbc.Driver
Oracle驅動程序:oracle.jdbc.driver.OracleDriver
SQLServer驅動程序:
com.Microsoft.jdbc.sqlserver.SQLServerDriver
2、建立資料庫連接
與MySQL資料庫連接的方法:
Connectioncon=DriverManager.getConnection(「jdbc:mysql://主機IP或主機名:3306/資料庫名」,用戶名,密碼);
java.sql.DriveManager用來處理裝載驅動程序並且為創建新的資料庫連接提供支持;
–java.sql.Connection用於完成對特定定資料庫的連接;
–java.sql.Statement用於對特定的資料庫執行SQL語句;java.sql.Statement又包含了以下兩個重要的子類型:
java.sql.PreparedStatement用於執行預編譯的SQL語句;
java.sql.CallableStatement用於執行資料庫中存儲的過程的調用;
--java.sql.ResultSet用於保存查詢所得的結果集
3、創建Statement對象
Statementst=con.createStatement();//最後可以不關閉,但推薦關閉
利用Statement對象可以執行靜態SQL語句,靜態SQL語句可以是Select語句、Delete語句、Update語句和Insert語句。
執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery()、executeUpdate()和execute()。具體使用哪一個方法由SQL語句本身來決定。
方法executeQuery用於產生單個結果集的語句,例如SELECT語句等。
方法executeUpdate用於執行INSERT、UPDATE或DELETE語句以及SQLDDL(數據定義語言)語句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE語句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一個整數,指示受影響的行數(即更新計數)。對於CREATETABLE或DROPTABLE等不操作行的語句,executeUpdate的返回值總為零。
方法execute用於執行返回多個結果集、多個更新計數或二者組合的語句。一般不會需要該高級功能。
①JDBC在編譯時並不對將要執行的SQL查詢語句作任何檢查,只是將其作為一個String類對象,直到驅動程序執行SQL查詢語句時才知道其是否正確。對於錯誤的SQL查詢語句,在執行時將會產生SQLException。
②一個Statement對象在同一時間只能打開一個結果集,對第二個結果集的打開隱含著對第一個結果集的關閉。
③如果想對多個結果集同時操作,必須創建出多個Statement對象,在每個Statement對象上執行SQL查詢語句以獲得相應的結果集。
④如果不需要同時處理多個結果集,則可以在一個Statement對象上順序執行多個SQL查詢語句,對獲得的結果集進行順序操作。
str="insertintocustomervalues('wangyang',24,'beijing','[email protected]')";
intrecordNumber=st.executeUpdate(str);執行executeUpdate()方法返回該SQL語句涉及的記錄數。
str="select*frommycustomer";//查詢表中記錄
ResultSetrs=st.executeQuery(str);由於SQL語句是select,用executeQuery()方法,返回一個結果集保存在ResultSet對象rs中。
4、分析ResultSet對象
①執行完畢SQL語句後,將返回一個ResultSet類的對象,它包含所有的查詢結果。但對ResultSet類的對象方式依賴於游標(Cursor)的類型,而對每一行中的各個列,可以按任何順序進行處理(當然,如果按從左到右的順序對各列進行處理可以獲得較高的執行效率);
ResultSet類中的Course方式主要有:
ResultSet.TYPE_FORWARD_ONLY(為預設設置):游標只能前進不能後退,也就是只能從第一個一直移動到最後一個。
ResultSet.TYPE_SCROLL_SENSITIVE:允許游標前進或後退並感應到其它ResultSet的游標的移動情形。
ResultSet.TYPE_SCROLL_INSENSITIVE:允許游標前進或後退並不能感應到其它ResultSet的游標的移動情形。
ResultSet類中的數據是否允許修改主要有:
ResultSet.CONCUR_READ_ONLY(為預設設置):表示數據只能只讀,不能更改。
ResultSet.CONCUR_UPDATABLE:表示數據允許被修改。
可以在創建Statement或PreparedStatement對象時指定ResultSet的這兩個特性。
Statementstmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
或
PreparedStatementpstmt=con.PrepareStatement("insertintobookTablevalues(?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
②ResultSet類的對象維持一個指向當前行的指針,利用ResultSet類的next()方法可以移動到下一行(在JDBC中,Java程序一次只能看到一行數據),如果next()的返回值為false,則說明已到記錄集的尾部。另外JDBC也沒有類似ODBC的書簽功能的方法。
③利用ResultSet類的getXXX()方法可以獲得某一列的結果,其中XXX代表JDBC中的Java數據類型,如getInt()、getString()、getDate()等。訪問時需要指定要檢索的列(可以採用int值作為列號(從1開始計數)或指定列(欄位)名方式,但欄位名不區別字母的大小寫)。
示例:
while(rs.next()){
intid=rs.getInt("id");
Stringname=rs.getString("cName");
intage=rs.getInt("cAge");
Stringaddress=rs.getString("cAddress");
Stringemail=rs.getString("cEmail");
System.out.println(id+""+name+""+age+""+address+""+email);
}
獲得結果集中的結構信息:利用ResultSet類的getMetaData()方法來獲得結果集中的一些結構信息(主要提供用來描述列的數量、列的名稱、列的數據類型。利用ResulSetMetaData類中的方法)。
ResultsetMetaDatarsmd=rs.getMetaData();
rsmd.getColumnCount();//返回結果集中的列數
rsmd.getColumnLabel(1);//返回第一列的列名(欄位名)
例如:
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromTableName");
for(inti=1;i<=rs.getMetaData().getColumnCount();i++)//跟蹤顯示各個列的名稱
{System.out.print(rs.getColumnName(i)+" ");
}
while(rs.next())
{//跟蹤顯示各個列的值
for(intj=1;j<=rs.getMetaData().getColumnCount();j++)
{System.out.print(rs.getObject(j)+" ");
}
}
5、關閉連接
(注意關閉的順序)例:
rs.close();
st.close();
con.close()
6、JDBC的常用API
一、Connection介面:
1.createStatement():創建資料庫連接
2.prepareStatement(Stringsql):創建預處理語句
3.prepareCall(Stringsql):創建可調用語句
4.getAutoCommit():獲取自動提交的模式
5.setAutoCommit():設置自動提交的模式
6.commit():提交所執行的SQL語句
7.rollback():回滾所執行的SQL語句
8.getMetaData():獲取一個DatabaseMetaData對象,該對象包含了有關資料庫的基本信息
9.close():關閉資料庫連接
10.isClose():判斷資料庫連接是否超時或被顯示關閉
二、Statement介面:
1.execute(Stringsql):執行SQL語句,如果返回值是結果集則為true,否則為false
2.executeQuery(Stringsql):執行SQL語句,返回值為ResultSet
3.executeUpdate(Stringsql):執行SQL語句,返回值為所影響的行數
4.addBatch(Stringsql):向當前Statement對象的命令列表中添加新的批處理SQL語句
5.clearBatch():清空當前Statement對象的命令列表
6.executeBatch():執行當前Statement對象的批處理語句,返回值為每個語句所影響的函數數組
7.getConnection():返回創建了該Statement對象的Connection對象
8.getQueryTimeout():獲取等待處理結果的時間
9.setQueryTimeout():設置等待處理結果的時間
三、ResultSet介面:
1.first()/beforeFirst():將游標移動到ResultSet中第一條記錄(的前面)
2.last()/afterLast():將游標移動到ResultSet中最後一條記錄(的後面)
3.absolute(intcolumn):將游標移動到相對於第一行的指定行,負數則為相對於最後一條記錄
4.relative(introws):將游標移動到相對於當前行的第幾行,正為向下,負為向上
5.next():將游標下移一行
6.previous():將游標上移一行
7.insertRow():向當前ResultSet和資料庫中被插入行處插入一條記錄
8.deleteRow():將當前ResultSet中的當前行和資料庫中對應的記錄刪除
9.updateRow():用當前ResultSet中已更新的記錄更新資料庫中對應的記錄
10.cancelUpdate():取消當前對ResultSet和資料庫中所做的操作
11.findColumn(StringcolumnName):返回當前ResultSet中與指定列名對應的索引
12.getRow():返回ResultSet中的當前行號
13.refreshRow():更新當前ResultSet中的所有記錄
14.getMetaData():返回描述ResultSet的ResultSetMetaData對象
15.isAfterLast():是否到了結尾
16.isBeforeFirst():是否到了開頭
17.isFirst():是否第一條記錄
18.isLast():是否最後一條記錄
19.wasNull():檢查列值是否為NULL值,如果列的類型為基本類型,且資料庫中的值為0,那麼
這項檢查就很重要。由於資料庫NULL也返回0,所以0值和資料庫的NULL不能區分。如果列的類型為對象,可以簡單地將返回值與null比較
20.close():關閉當前ResultSet
四、ResultSetMetaData介面:
1.getColumnCount():返回ResultSet中列的數目
2.getColumnName():返回列在資料庫中的名稱
3.getColumnType():返回列的SQL類型
4.isReadOnly():表示該數據項是否為只讀值
5.isNullable():表示該列是否可以存儲NULL
示例:
importjava.sql.*;
publicclassJDBCTest{
publicstaticvoidmain(String[]args){
//驅動程序名
Stringdriver="com.mysql.jdbc.Driver";
//URL指向要訪問的資料庫名scutcs
Stringurl="jdbc:mysql://127.0.0.1:3306/test";
//MySQL配置時的用戶名
Stringuser="root";
//MySQL配置時的密碼
Stringpassword="123456";
try{
//載入驅動程序
Class.forName(driver);
//連續資料庫
Connectionconn=DriverManager.getConnection(url,user,password);
if(!conn.isClosed())
System.out.println("!");
//statement用來執行SQL語句
Statementstatement=conn.createStatement();
//要執行的SQL語句
Stringsql="select*frompet";
//結果集
ResultSetrs=statement.executeQuery(sql);
System.out.println("-----------------");
Stringname=null;
while(rs.next()){
//選擇sname這列數據
name=rs.getString("name");
//首先使用ISO-8859-1字元集將name解碼為位元組序列並將結果存儲新的位元組數組中。
//然後使用GB2312字元集解碼指定的位元組數組
name=newString(name.getBytes("ISO-8859-1"),"GB2312");
//輸出結果
System.out.println(rs.getString("ID")+" "+name);
}
rs.close();
conn.close();
}catch(ClassNotFoundExceptione){
System.out.println("Sorry,can`tfindtheDriver!");
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
}
⑨ 請問高手:如何用SQL語句獲得數據表中所有關鍵欄位的名稱
我使用的是Delphi5.在Delphi自帶的SQL
Explore
使用
SQL語句"select
*
from
syscolumns
"這條簡單的語句的.如果創建資料庫別名時資料庫類型用MSSQL,即通過Micrsosoft
SQL
Server
2000與資料庫連接,這時使用SQL語句"select
*
from
syscolumns
"返回的結果中包括"name"欄位;如果創建資料庫別名時資料庫類型用SQL
Server,即通過ODBC數據源與資料庫連接,這時使用SQL語句"select
*
from
syscolumns
"返回的結果中就不包括"name"欄位,好像返回的記錄數倒是相同.你們說奇不奇怪?用'sp_pkeys
tablename'也出現類似的現象:無'COLUMN_NAME'欄位!與本地資料庫連接,結果也是如此!不信嗎?我試過好幾台機子!!!
我之所以測試用ODBC與異地資料庫進行連接是由於ODBC驅動程序是windows(Win2000)系統自帶的,不需要額外再用專門的Micrsosoft
SQL
Server!請樓上的各位兄弟幫忙解決!
⑩ c/c++怎麼連接資料庫,並執行SQL語句
C++連接SQL資料庫第一步 系統配置
1.設置SQLSERVER伺服器為SQL登錄方式,並且系統安全性中的sa用戶要設置登錄功能為「啟用」,還有必須要有密碼。
2.需要在ODBC中進行數據源配置,數據源選\」SQL SERVER」,登錄方式使用「使用輸入用戶登錄ID和密碼的SQL SERVER驗證」,並填寫登錄名(sa)和密碼,注意一點,密碼不能為空,這就意味著你的sa用戶必須得有密碼。否則無法通過系統本身的安全策略。測試通過就完成了配置。
C++連接SQL資料庫第二步 C++與SQL連接初始化
1.在你所建立的C++項目中的stdafx.h頭文件中引入ADO
具體代碼如下
#import 「c:\Program Files\Common Files\System\ado\msado15.dll」
no_namespace rename(」EOF」, 「adoEOF」) rename(」BOF」, 「adoBOF」)
2.定義_ConnectionPtr變數後調用Connection對象的Open方法建立與伺服器的連接。
數據類型_ConnectionPtr實際上是由類模板_com_ptr_t得到的一個具體的實例類。_ConnectionPtr類封裝了Connection對象的Idispatch介面指針及其一些必要的操作。可以通過這個指針操縱Connection對象。
例如連接SQLServer資料庫,代碼如下:
//連接到MS SQL Server
//初始化指針
_ConnectionPtr pMyConnect = NULL;
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return;
//初始化鏈接參數
_bstr_t strConnect = 「Provider=SQLOLEDB;
Server=hch;
Database=mytest;
uid=sa; pwd=sa;」; //Database指你系統中的資料庫
//執行連接
try
{
// Open方法連接字串必須四BSTR或者_bstr_t類型
pMyConnect->Open(strConnect, 「」, 「」, NULL);
}
catch(_com_error &e)
{
MessageBox(e.Description(), 「警告」, MB_OK|MB_ICONINFORMATION);
}//發生鏈接錯誤
C++連接SQL資料庫第三步 簡單的數據連接
//定義_RecordsetPtr變數,調用它Recordset對象的Open,即可打開一個數據集
//初始化過程 以下是個實例
_RecordsetPtr pRecordset;
if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))
{
return;
}
//執行操作
try
{
pRecordset->Open(_variant_t(」userinfo」),
_variant_t((IDispatch*)pMyConnect),
adOpenKeyset, adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
MessageBox(」無法打開userinfo表\」, 「系統提示」,
MB_OK|MB_ICONINFORMATION);
}
C++連接SQL資料庫第四步 執行SQL語句
這里是關鍵,我認為只要你懂點SQL語句那麼一切都會方便許多比用上面的方法簡單,更有效率點。
首先
m_pConnection.CreateInstance(_uuidof(Connection));
//初始化Connection指針
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Recordset指針
CString strSql=」select * from tb_goods」;//具體執行的SQL語句
m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),
NULL, adCmdText);//將查詢數據導入m_pRecordset數據容器
至此 你的SQL語句已經執行完成了m_pRecordset內的數據就是你執行的結果。
取得記錄:
while(!m_pRecordset->adoEOF)//遍歷並讀取name列的記錄並輸出
{
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem
(」name」)->Value;
AfxMessageBox(temp);
pRecordset->MoveNext();
}
插入記錄
//記得初始化指針再執行以下操作
CString strsql;
strsql.Format(」insert into tb_goods(no,name, price)
values(』%d』,'%s』, %d)」,m_intNo,m_strName,m_intPrice);
m_pRecordset=m_pConnection->
Execute(_bstr_t(strsql),NULL,adCmdText);
修改記錄
CString strsql;
strsql.Format(」update tb_goods set name=』%s』 ,
price=%d where no=%d 「,m_strName,m_intPrice,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText);
刪除記錄
CString strsql;
strsql.Format(」delete from tb_goodswhere no= 『%d』 「,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText)