C语言连接SQL数据库例子
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具体代码如下1.#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得到的一个具体的实例类。
_Connectio nPtr类封装了Connection对象的Idispatch接口指针及其一些必要的操作。
可以通过这个指针操纵Connection对象。
例如连接SQLServer数据库,代码如下:1.//连接到MS SQL Server2.//初始化指针3._ConnectionPtr pMyConnect = NULL;4.HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));5.if (FAILED(hr))6.return;7.//初始化链接参数8._bstr_t strConnect = “Provider=SQLOLEDB;9.Server=hch;10.Database=mytest;11.uid=sa; pwd=sa;”; //Database指你系统中的数据库12.//执行连接13.try15.// Open方法连接字串必须四BSTR或者_bstr_t类型16.pMyConnect->Open(strConnect, “”, “”, NULL);17.}18.catch(_com_error &e)19.{20.MessageBox(e.Description(), “警告”, MB_OK|MB_ICONINFORMATION);21.}//发生链接错误C++连接SQL数据库第三步简单的数据连接1.//定义_RecordsetPtr变量,调用它Recordset对象的Open,即可打开一个数据集2.//初始化过程以下是个实例3._RecordsetPtr pRecordset;4.if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))5.{6.return;7.}8.//执行操作9.try10.{11.pRecordset->Open(_variant_t(”userinfo”),_variant_t((IDispatch*)pMyConnect),12.adOpenKeyset, adLockOptimistic, adCmdTable);13.}14.catch (_com_error &e)15.{16.MessageBox(”无法打开userinfo表\”, “系统提示”,MB_OK|MB_ICONINFORMATION);C++连接SQL数据库第四步执行SQL语句这里是关键,我认为只要你懂点SQL语句那么一切都会方便许多比用上面的方法简单,更有效率点。
sql数据库 c 应用实例
sql数据库c 应用实例在C语言中与SQL数据库进行交互通常涉及使用某种数据库连接库。
一个常见的库是SQLite,它是一个轻量级的数据库,非常适合嵌入式系统和桌面应用程序。
以下是一个简单的C语言应用程序示例,该程序使用SQLite库来创建一个数据库,插入一些数据,并从中检索数据。
首先,确保你已经安装了SQLite库。
在Linux上,你可以使用包管理器来安装它。
例如,在基于Debian的系统上,你可以运行:shsudo apt-get install libsqlite3-dev接下来,创建一个C文件,例如main.c,并输入以下代码:c#include <stdio.h>#include <sqlite3.h>static int callback(void *data, int argc, char **argv, char **azColName) {int i;for (i = 0; i < argc; i++) {printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");}printf("\n");return 0;}int main(int argc, char *argv[]) {sqlite3 *db;char *zErrMsg = 0;int rc;rc = sqlite3_open(":memory:", &db);if (rc) {fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));return(0);} else {fprintf(stderr, "Opened database successfully\n");}/* 创建表格*/char *sql = "CREATE TABLE Company(""ID INT PRIMARY KEY NOT NULL,""NAME TEXT NOT NULL, ""AGE INT NOT NULL, ""ADDRESS CHAR(50), ""SALARY REAL)";rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Table created successfully\n");}/* 插入数据*/sql = "INSERT INTO Company (ID,NAME,AGE,ADDRESS,SALARY) ""VALUES (1, 'Paul', 32, 'California', 20000.00 );";rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Record inserted successfully\n"); }/* 查询数据*/sql = "SELECT * from Company";rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);if (rc != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Operation done successfully\n"); }sqlite3_close(db);return 0;}这个程序做了以下几件事:它打开了一个在内存中的SQLite数据库(这意味着数据库只在程序运行时存在,程序关闭后数据库将被删除)。
C#连接数据库SQL(2005)
C#连接数据库SQL(2005)⾸先来总结⼀下进⾏数据库编程的全过程,这⾥⽤的是SQL SERVER(1) 建⽴SqlConnection对象以连接数据库SqlConnection mysqlconnection=new SqlConnection("Server=localhost; database=yourdatabase;uid=sa;pwd=sa"); (2) 建⽴SqlCommand对象SqlCommand mysqlcommand=mysqlconnection.CreateCommand();(3) 设置SqlCommand对象的CommandText属性mandText="SELECT * FROM youydatabasetablename";(4) 打开SqlConnection对象mysqlconnection.open();(5) 运⾏SELECT语句SqlDataReader mysqldatareader=mysqlcommand.ExecuteReader();本⼈初学,此处疑惑,还望⾼⼿解答:此处没有SqlDataReader mysqldatareader=new SqlDataReader();⽽是直接执⾏,可以吗?如果没有new创建对象,后⾯的(8)mysqldatareader.Close(); 需要关闭吗?谢谢⾼⼈解答(6) ⽤SqlDataReader对象读⾏mysqldatareader.Read();(7) 显⽰SqlDataReader对象中的数值yourtextbox.Text=mysqldatareader["ID"].ToString(); //ID是你数据库中的⼀项列名(8) 关闭SqlDataReader对象mysqldatareader.Close();本⼈初学,此处疑惑,还望⾼⼿解答:需要关闭mysqlcommand吗即mysqlcommand.Close() 还是因为调⽤了CreateCommand()⽅法⽽不需要关闭吗?(9) 关闭SqlConnection对象mysqlconnection.Close();下⾯把过程呈现出来.1、在我的程序中⽤的是SQL,所以在程序头前加上using System.Data.SqlClient;2、在Form1中加⼊应有的控件,⽤于显⽰数据.3、申请变量static private int m = 1; //显⽰每条记录static private int k; //得到记录条数SqlCommand mysqlcommand;SqlConnection mysqlconnection;4、连接数据库,注意这⾥的连接字符串,⽤的是安全类型.try{mysqlconnection = new SqlConnection("server=localhost;Integrated Security=True;Database=myfriends");mysqlcommand = mysqlconnection.CreateCommand();//得到记录条数mandText = "SELECT COUNT(*) FROM Friends";mysqlconnection.Open();k = (int)mysqlcommand.ExecuteScalar();GetData(1);}catch (SqlException ex){MessageBox.Show("A SqlException was thrown,Number = " +ex.Number + //错误号ex.Message + //错误描述字符串ex.StackTrace); //抛出异常的类名和⽅法名字符串}5、如果数据库中有多条记录就要逐条显⽰在逐条显⽰的按钮事件中:m += 1; //下⼀条索引值if (m > k){MessageBox.Show("最后⼀条!将显⽰第⼀条记录!", "信息提⽰");m = 1;}this.hisname.Text = ""; //要显⽰下条,当然先清空this.hissex.Text = "";this.hisadress.Text = "";this.hisbirthday.Text = "";GetData(m); //显⽰下第数据6、在显⽰数据中⽤到显⽰下⼀条函数;private void GetData(int i){mandText = "SELECT ID,Name,Sex,"+ "birthday,address FROM Friends WHERE ID="+i; SqlDataReader mysqldatareader = mysqlcommand.ExecuteReader();mysqldatareader.Read();this.hisname.Text = mysqldatareader["Name"].ToString();this.hissex.Text = mysqldatareader["Sex"].ToString();this.hisadress.Text = mysqldatareader["Address"].ToString();this.hisbirthday.Text = mysqldatareader["Birthday"].ToString();mysqldatareader.Close();}。
C_与Sqlserver2005数据库的连接方法
一. 数据库连接字符串文章由 网提供典型的数据库连接字符串包括:集成验证和混合验证两种模式 集成验证连接字符:Data Source=locolhost; Initial Catalog=数据库名称; Integrated Security=True 混合验证模式字符:Server=localhost;Initial Catalog=数据库名称; Persist Security Info=False; User ID=****; Password=****; 注:1.这里的Data Source 或Server 表示数据源所在的计算机名称或IP 地址,可以互换。
2.Initial Catalog 表示连接的数据库名称,可写为database 3.Integrated Security 表示是否要为集成身份验证4.如果使用的是混合验证,需要提供用户名User ID 和密码Password 字段。
二. 类和对象如下图为 中的基本类,注意不是一个继承表,而是关系表·提供者对象:专用于每一种类型的数据源;专用于提供者的对象完成数据源中实际的读取和写入工作。
·用户对象:将数据读入到内存中后用来访问和操作的数据的对象。
提供者对象需要一个活动的连接,可以使用它们预先读取数据,然后根据需要通过用户对象使用内存中的数据,也可以使用提供者对象更新数据源中的数据,并将改动写回到数据源中。
用户对象以非连接方式使用,甚至在数据库连接关闭之后,也可使用内存中的数据。
1.提供者对象在每一个.NET数据提供者中定义的对象,其名前带有特定提供者的名称。
因此,用于OLE DB 提供者的连接对象就是OleDbConnection;用于提供者的类是SqlConnection。
使用时要分别使用using System.Datat.OleDb;和using System.Data.SqlClient;(1)连接对象连接对象是我们使用的第一个对象,用于任何其它对象之前。
C#连接SQLServer数据库(一)
C#连接SQLServer数据库(⼀)C#连接数据库:Connection对象1.Connection对象概述 Connection对象是⼀个连接对象,主要功能是建⽴与物理数据库的连接。
其主要包括4种访问数据库的对象类,也可称为数据提供程序,分别介绍如下。
SQL Server数据提供程序,位于System.Data.SqlClient命名空间。
ODBC数据提供程序,位于System.Data.Odbc命名空间。
OLEDB数据提供程序,位于System.Data.OleDb命名空间。
Oracle数据提供程序,位于System.Data.OracleClient命名空间。
说明:根据使⽤数据库的不同,引⼊不同的命名空间,然后通过命名空间中的Connection对象连接类连接数据库。
例如,连接SQL Server数据库,⾸先要通过usingSystem.Data.SqlClient命令引⽤SQL Server数据提供程序,然后才能调⽤空间下的SqlConnection类连接数据库。
2.连接数据库 以SQL Server数据库为例,如果要连接SQL Server数据库,必须使⽤System.Data.SqlClient命名空间下的SqlConnection类。
所以⾸先要通过usingSystem.Data.SqlClient命令引⽤命名空间,连接数据库之后,通过调⽤SqlConnection对象的Open⽅法打开数据库。
通过SqlConnection对象的State属性判断数据库的连接状态。
界⾯:代码: ``` private void btn1_Click(object sender, EventArgs e) { if (txt1.Text == "") { MessageBox.Show("请输⼊要连接的数据库名称!"); } else { try { string connString ="server=.;database=" + txt1.Text.Trim() + ";uid=test;pwd=test;connect timeout=5"; //** SqlConnection sqlConnection = new SqlConnection(connString); //**sqlConnection.Open(); //**if (sqlConnection.State == ConnectionState.Open){lab2.Text = "数据库【" + txt1.Text.Trim() + "】已经连接并打开!";}}catch{MessageBox.Show("数据库连接失败!");}}}##3.关闭连接  <b>当对数据库操作完毕后,要关闭与数据库的连接,释放占⽤的资源。
C连接SQL
//2.连接句柄 使用SQLAllocHandle()与SQLConnect函数进行连接
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) {
printf("连接失败!\n");
} else {
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
SQLPrepare(hstmt1,pre_sql,strlen(pre_sql)-1);
//第三个参数(29)与数组大小相同,而不是数据库列相同 ,判断连接是否成功
"insert into Student values('20301','mike','23');"
"insert into Student values('20301','mike','23');"
"insert into Student values('20301','mike','23');"
//释放语句句柄
}
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
c++控制台连接sql数据库
例:创建数据库media 其中有表tb_user 列name、idnum一、连接数据库#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")#pragma comment(lib, "winmm.lib")_ConnectionPtr pConnection;_CommandPtr pCommand;_RecordsetPtr pRecordset;pRecordset.CreateInstance("ADODB.Recordset"); pConnection.CreateInstance("ADODB.Connection"); pCommand.CreateInstance("mand");1、打开数据库(其中用户名密码是安装数据库时设定的)_bstr_t strConnect="Provider=SQLOLEDB;Server=(local);Database=media;uid=sa; pwd=2944028a;";pConnection->Open(strConnect,"","",adModeUnknown);注:如果要连接局域网内其他电脑上的数据库_bstr_t strConnect="Provider=SQLOLEDB;Data Source=192.168.1.119;Database=media;uid=sa; pwd=2944028a;";pConnection->Open(strConnect,"","",adModeUnknown);2、打开表pRecordset->Open("SELECT * FROM tb_user",pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);二、添加数据Char name[]=”hwm”;Char num[]=”12345”;pRecordset->AddNew(); //添加行pRecordset->PutCollect("name", _variant_t(name)); //写入数据pRecordset->PutCollect("num", _variant_t(num)); pRecordset->Update(); //更新数据库三、更改位置及判断pRecordset->MoveFirst(); //移动到第一行pRecordset->MoveNext(); //移动到下一行pRecordset->BOF //判断表是否为空pRecordset->rsEOF //判断表是否结束四、读取数据if(!pRecordset->BOF) //判断表是否为空pRecordset->MoveFirst();else { cout<<"表内数据为空";return 0; }_variant_t vname,vnum,Char name[30];Char num [30];vname = pRecordset->GetCollect("name");vnum = pRecordset->GetCollect("num");strcpy(name,(LPCSTR)_bstr_t(vname));strcpy(num,(LPCSTR)_bstr_t(vnum));五、修改数据if(!pRecordset->BOF) //判断表是否为空pRecordset->MoveFirst();else { cout<<"表内数据为空";return 0; }pRecordset->MoveNext(); //移动到想要修改的行pRecordset->PutCollect("name", _variant_t(name)); pRecordset->PutCollect("num", _variant_t(num));六、删除数据if(!pRecordset->BOF) //判断表是否为空pRecordset->MoveFirst();else { cout<<"表内数据为空";return 0; }pRecordset->MoveNext(); //移动到想要删除的行pRecordset->Delete(adAffectCurrent); //删除pRecordset->Update();。
C连接SQL数据库
C # 连接S Q L 2005数据库 学会数据库连接,再会点C# 就可以打打酱酒----某人说的 要想上手快,思路最重要:数据库 ,应用程序,他们是两个不同的对象。
现在我们要他们能够进行相互交换数据,需在在他们两之间建立一条通道。
至于这条通道是怎么建立的 下面有介绍。
第一步,要确定数据库那边连接正常:1. 服务是否开启:运行DOS 窗口:net start mssqlserver2用户是否能够正常登录:如果弹出这些警告信息你可以到这两个地方看看:服务器属性和用户属性先右击属性。
然后把SQL 和windows 身份验证模式 选上。
先右击属性。
看下登录属性是否被禁用,把启用选上。
可能还有一些其他问题,(在DOS 窗口下:sqlservermanager.msc ),看看这里的服务是否启用第二步:/首先,定义连接字符串。
然后,数据库进行连接。
接着,打开数据库。
然后,执行SQL语句。
最后,记得关闭数据库。
在VS2010 编写相应的代码(//引用这个命名空间)//定义连接字符串server=服务器名(.代表本地服务器)string sqlcon = "Server=.;Database=myd;Uid=sa;Pwd=s";//定义查询语句string sqlquery = "select * from Soccer";//用SqlConnection这个对象与数据库进行连接SqlConnection con = new SqlConnection(sqlcon);try{con.Open();//数据库连接之后,打开。
MessageBox.Show("数据库连接成功!")//看数据库是否连接成功}catch(Exception ex){MessageBox.Show(ex.Message);}finally{con.Close();//必须关闭}测试成功数据库简单的增删改查:1>S elect (在窗体中添加dataGridView1 这个控件)a. 查询整个表,并把表里的数据放在dataGridView1里,代码如下:private void Form1_Load(object sender, EventArgs e){string sqlcon = "Server=.;Database=MySchool;Uid=sa;Pwd=sa ";string sqlquery = "select * from Student";DataSet ds = new DataSet();//创建一个数据集,把查询到的数据放在ds里SqlConnection con = new SqlConnection(sqlcon);try{con.Open();SqlDataAdapter sda = new SqlDataAdapter(sqlquery, con);//用sqlDataAdapter 这个对象去与数据库(con)建立一个通道,在这个通道里执行sqlquery这条语句。
C连接MYSQL数据库的3种方法及示例
C连接MYSQL数据库的3种方法及示例连接MYSQL数据库有多种方法,下面介绍其中三种常用的方法。
1.使用CAPI连接MYSQL数据库CAPI是官方提供的一套用于连接和操作MYSQL数据库的函数库。
使用该API,可以在C程序中直接连接MYSQL数据库,并执行各种SQL语句。
以下是一个连接MYSQL数据库的示例:```c#include <mysql.h>int maiMYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;conn = mysql_init(NULL);if (conn == NULL)fprintf(stderr, "mysql_init failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL)fprintf(stderr, "mysql_real_connect failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}if (mysql_query(conn, "SELECT * FROM table"))fprintf(stderr, "mysql_query failed: %s\n",mysql_error(conn));mysql_close(conn);return 1;}res = mysql_use_result(conn);while ((row = mysql_fetch_row(res)) != NULL)printf("%s %s %s\n", row[0], row[1], row[2]);}mysql_free_result(res);mysql_close(conn);return 0;```上述代码首先初始化MYSQL对象,然后使用mysql_real_connect函数连接MYSQL数据库。
C#连接sqlServer数据库
C#连接sqlServer数据库连接sqlServer数据库⼀.创建数据库在⽤[Microsoft SQL Server Management Studio]⼯具,建⽴⼀个数据库,然后执⾏下⾯脚本CREATE TABLE [dbo].[Company]([Id] [int] IDENTITY(1,1) NOT NULL,[Name] [nvarchar](500) NULL,[CreateTime] [datetime] NOT NULL,[CreatorId] [int] NOT NULL,[LastModifierId] [int] NULL,[LastModifyTime] [datetime] NULL,CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED([Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]GOINSERT INTO [dbo].[Company]([Name],[CreateTime],[CreatorId],[LastModifierId],[LastModifyTime])VALUES('腾讯','2020-05-26',1,1,'2020-05-26')⼆.⼆.设置App.config中的连接字符串,如下Data Source=服务器名;Database=数据库名;User ID=⽤户名;Password=密码,这些参数需要根据⾃⼰的情况,重新设置<?xml version="1.0" encoding="utf-8" ?><configuration><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /></startup><connectionStrings><add name="DBConnect" connectionString="Data Source=localhost;Database=Text_DB;User ID=sa;Password=123"/></connectionStrings></configuration>三,执⾏下⾯的代码1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using System.Data.SqlClient;7using System.Configuration;8using Ruanmou.Model;9using System.Reflection;1011namespace _001_Text12 {13class Program14 {15///<summary>16///从App.config中获取连接数据库字符串17///</summary>18private static string SqlServerConnString = ConfigurationManager.ConnectionStrings["DBConnect"].ConnectionString;19static void Main(string[] args)20 {21 Company commpany = Find<Company>(1);22 Console.WriteLine();23 Console.WriteLine(commpany.CreateTime);24 Console.WriteLine(commpany.CreatorId);25 Console.ReadKey();26 }27public static T Find<T>(int id)28 {29 Type type = typeof(T);30string columnString = string.Join(",", type.GetProperties().Select(p => $"[{p.GetColumnName()}]"));31string sql = $"SELECT {columnString} FROM [{}]";32 T t = (T)Activator.CreateInstance(type);33using (SqlConnection conn = new SqlConnection(SqlServerConnString))34 {35 SqlCommand command = new SqlCommand(sql, conn);36 conn.Open();37 SqlDataReader reader = command.ExecuteReader();38while (reader.Read())39 {40foreach (var prop in type.GetProperties())41 {42 prop.SetValue(t, reader[] is DBNull ? null : reader[]);43 }44 }45 }46return t;47 }48 }4950///<summary>51///扩展⽅法,静态类,静态字段,this这⼏个特征组成的52///</summary>53public static class AttributeHelper54 {55public static string GetColumnName(this PropertyInfo prop)56 {57if (prop.IsDefined(typeof(ColumnAttribute), true))58 {59 ColumnAttribute columnName = (ColumnAttribute)prop.GetCustomAttribute(typeof(ColumnAttribute), true); 60return columnName.GetColumnName();61 }62else63 {64return ;65 }66 }67 }6869///<summary>70///反射类71///</summary>72 [AttributeUsage(AttributeTargets.Property)]//表⽰此反射类只能修饰属性73public class ColumnAttribute : Attribute74 {75private string _ColumnName = string.Empty;76public ColumnAttribute(string name)77 {78this._ColumnName = name;79 }80public string GetColumnName()81 {82return _ColumnName;83 }84 }85 }执⾏结果如下图四,知识补充连接数据,主要⽤到了3个类1>数据库连接类:SqlConnetion位于System.Data.SqlClient的命名空间下2>数据库命令类:SqlCommand主要执⾏对数据库的操作,⽐如插⼊、删除、修改等3>数据库读取类:SqlDataReader是SqlCommand执⾏了查询操作后,返回的数据类型其中,三个⽐较常⽤的⽅法ExecuteNonQuery():提交⽆查询结果的SQL语句,如UPDATE,INSERT,DELETE等语句,其返回值为数据库中被SQL语句影响的⾏数; ExecuteReader():提交SELECT语句,返回值是⼀个数据流,⾥⾯是SELECT语句的查询结果,可以⽤SqlDataReader对象来接收,然后调⽤其Read()⽅法来逐⾏读出查询结果;ExexuteScalar():提交SELECT语句,但是其返回值是查询结果的第⼀⾏第⼀列,所以适⽤于例如COUNT等聚合查询。
C#与sqlserver数据库操作_附实例说明及sql语句大全
C#数据库连接操作大全+sql语句大全下面是c#与数据库的连接及增删改除的各种操作,全部经过上机验证。
学习软件的过程中,数据库起着至关重要的作用。
软件行业里面有句老话,不会数据库就没有入门。
软件思想可以慢慢培养,但是数据库的链接是一定要学会的。
增删改查各种都不能少。
创建数据库创建之前判断该数据库是否存在if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name删除数据库drop database dbname备份sql server--- 创建备份数据的device USE master EXEC sp_addumpdevice'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份BACKUP DATABASE pubs TO testBack创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only删除新表drop table tabname增加一个列Alter table tabname add column col type 注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
MFC实现SQL数据库ADO连接
VC MFC实现SQL数据库ADO连接(完整版)关于vc6.0中实现ADO SQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇简单化的文章的。
希望跟我一样的菜鸟们学得开心!源代码文件链接:/s/1eR9icyY概述:要在一个vc工程中实现数据库的连接,最好的方式是在新建一个用于连接数据库的类比如ADOConn,需要连接数据库的时候将这个类实例化就可以了。
操作:新建一个ADOConn的对象,比如ADOConn ac;。
然后再引用些对象就可以实现相应的操作了。
实践过程:(一)目的:封装一个自己的类。
在vc6.0中新建一个基于对话框的mfc工程,然后点击菜单栏->插入->类(mfc类)。
然后在“类的类型”中选择Generic Class,名称为ADOConn。
此后会在vc左边视窗的“Source Files”中多出一个ADOConn.cpp的文件,在"HeaderFiles"中多出一个“ADOCon.h”的文件。
如果是用VS2013来创建工程的情况:VS2013中添加类:右击myMFC(新建的项目)——添加——类——MFC类。
(二)打开ADOConn.h(即编辑ADOConn类的头文件)(1)在第一行加入(用于vc支持ado连接)#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")//不要命名空间,重命名EOF为adoEOF,rename的意思就是改名了,rename("EOF","adoEOF")将EOF 改名为adoEOF,以免和C语言里的EOF重名。
C#连接Access、SQL_Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码
PS:
1.“+=”后面的“@”符号是防止将后面字符串中的“\”解析为转义字符。
2.如果要连接的数据库文件和当前文件在同一个目录下,还可以使用如下的方法连接:
view plaincopy to clipboardprint?
01.strConnection+="Data Source=";
1.C#连接Access
程序代码:
view plaincopy to clipboardprint?
ing System.Data;using System.Data.OleDb;
02.string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";strConnection+=@"DataSource=C:BegASPNETNorthwind.mdb";
“Provider=Microsoft.Jet.OleDb.4.0;”是指数据提供者,这里使用的是Microsoft Jet引擎,也就是Access中的数据引擎,就是靠这个和Access的数据库连接的。
“Data Source=C:\BegASPNET\Northwind.mdb”是指明数据源的位置,他的标准形式是“Data Source=MyDrive:MyPath\MyFile.MDB”。
02.strConnection+=MapPath("Northwind.mdb");
strConnection+="Data Source=";
strConnection+=MapPath("Northwind.mdb");
C#连接SQLServer的实现方法
C#连接SQLServer的实现⽅法前⾔对于专业的程序员来说,C#连接SqlServer进⾏新增、修改、查询哪简直就是⼩菜⼀碟,信⼿拈来,但对刚⼊门孩童们就不是哪么⼀回事了,有时⼀个代码出错就折腾好⼏天,所以下⾯这篇⽂章就来给⼤家介绍下C#连接SQL Server的相关内容。
C# ⽤ Connection 连接数据库,⼀般在连接字符串⾥需要指定要连接数据源的种类、数据库服务器的名称、数据库名称、登陆⽤户名、密码、等待连接时间、安全验证设置等参数信息,这些参数之间⽤分号隔开。
下⾯将详细描述这些常⽤参数的使⽤⽅法。
1. Provider 参数Provider 参数⽤来指定要连接数据源的种类。
如果使⽤的是 SQL Server Data Provider,则不需要指定 Provider 参数,因为SQL Server Data Provider 已经指定了所要连接的数据源是 SQL Server 服务器。
如果要使⽤的是 OLE DB Provider 或其他连接数据库,则必须指定 Provider 参数2. Server 参数Server 参数⽤来指定需要连接的数据库服务器(或数据域)。
例如,Server=(local)指定连接的数据库服务器是本地的。
另外,如果连接的是远端的数据库服务器,则 Server 参数可以写成Server=IP或 Server="远程计算机名"的形式。
Server 参数也可以写成Data Source,如:Data Source=IP。
例如:server=(local); Initial Catalog=student; user Id=sa; password=;Data source=(local); Initial Catalog=student; user Id=sa; password=;3. DataBase 参数DataBase 参数⽤来指定连接数据库名,如:DataBase=Master,说明连接的数据库是 Master。
C与SQL连接
创建一个数据库create database data1220 --创建数据库go --go代表后面的语句是在前面语句执行的基础上进行的use data1220 --确定操作数据库对象gocreate table users --给数据库添加一个表(code int identity(1,1) primary key, --定义一个自增长列,并设为主键name varchar(20) not null, --姓名列,不许为空pwd varchar(20) not null --密码列,不许为空)insert into users values('zhangsan', 111) --给数据库中的users表,添加数据insert into users values('lisi' ,222)insert into users values('wangwu',333)insert into users values('zhaoliu',444)select *from users --查询数据delete from users通过C#winform程序访问数据库数据用到的命名空间和变量类型:using System.Data.SqlClient; SqlConnection;数据库连接类SqlCommand;数据库操作类SqlDataReader:读取2.login按钮上触发事件:连接数据库函数//按登录按钮,核对输入的数据private void button1_Click(object sender, EventArgs e){//后面拼写查询语句要用到窗体的信息string user = textBox1.Text;string pwd = textBox2.Text;//创建数据库连接类的对象SqlConnectioncon= new SqlConnection("server=.;database=data1220;user=sa;pwd=123");//将连接打开con.Open();//执行con对象的函数,返回一个SqlCommand类型的对象SqlCommand cmd = con.CreateCommand();//把输入的数据拼接成sql语句,并交给cmd对象mandText = "select*from users where name='"+user+"'and pwd='"+pwd+"'";//用cmd的函数执行语句,返回SqlDataReader对象dr,dr就是返回的结果集(也就是数据库中查询到的表数据) SqlDataReader dr = cmd.ExecuteReader();//用dr的read函数,每执行一次,返回一个包含下一行数据的集合dr,在执行read函数之前,dr并不是集合if(dr.Read()){//dr[]里面可以填列名或者索引,显示获得的数据MessageBox.Show(dr[1].ToString());}//用完后关闭连接,以免影响其他程序访问con.Close();}往数据库添加数据//添加数据private void button2_Click(object sender, EventArgs e){string user = textBox1.Text;string pwd = textBox2.Text;//创建数据库连接类的对象SqlConnection con = new SqlConnection("server=.;database=data1220;user=sa;pwd=123"); con.Open();//执行con对象的函数,返回一个SqlCommand类型的对象SqlCommand cmd = con.CreateCommand();//拼写语句mandText = "insert into users values('"+user+"','"+pwd+"')";//增删改用ExecuteNonQuery,会返回一个整型数字int count = cmd.ExecuteNonQuery();if (count > 0){MessageBox.Show("添加成功");}else{MessageBox.Show("添加失败");}} 修改数据//根据编号修改数据private void button4_Click(object sender, EventArgs e){string user = textBox1.Text;string pwd = textBox2.Text;string code=textBox3.Text;//创建数据库连接类的对象SqlConnection con = new SqlConnection("server=.;database=data1220;user=sa;pwd=123"); con.Open();//执行con对象的函数,返回一个SqlCommand类型的对象SqlCommand cmd = con.CreateCommand();//拼写语句mandText = "update users set name='"+user+"',pwd='"+pwd+"' where code="+code; //增删改用ExecuteNonQuery,会返回一个整型数字int count = cmd.ExecuteNonQuery();if (count > 0){MessageBox.Show("修改成功");}else{MessageBox.Show("修改失败");}con.Close();}删除数据private void button3_Click(object sender, EventArgs e){string code = textBox3.Text;//创建数据库连接类的对象SqlConnection con = new SqlConnection("server=.;database=data1220;user=sa;pwd=123"); con.Open();//执行con对象的函数,返回一个SqlCommand类型的对象SqlCommand cmd = con.CreateCommand();//拼写语句mandText ="delete from users where code=" + code;//增删改用ExecuteNonQuery,会返回一个整型数字 int count = cmd.ExecuteNonQuery(); if (count > 0){MessageBox.Show("删除成功"); }else{MessageBox.Show("删除失败"); }con.Close();}。
C语言连接SQL数据库例子
连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "util.h"#include <sqlca.h>EXEC SQL INCLUDE SQLCA; (1)main(){EXEC SQL BEGIN DECLARE SECTION; (2)char firstname[13];char userid[9];char passwd[19];EXEC SQL END DECLARE SECTION;EXEC SQL CONNECT TO sample; (3)EXEC SQLSELECT FIRSTNME INTO :firstname (4)页脚内容1FROM employeeWHERE LASTNAME = 'JOHNSON';(4)printf( "First name = %s\n", firstname );EXEC SQL CONNECT RESET; (5)return 0;}上面是一个简单的静态嵌入SQL语句的应用程序。
它包括了嵌入SQL的主要部分:(1)中的include SQLCA语句定义并描述了SQLCA的结构。
SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。
宿主变量可被SQL 语句引用,也可以被C语言语句引用。
它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。
在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。
C连接MYSQL数据库的3种方法及示例
C# 连接MYSQL数据库的方法及示例连接MYSQL数据库的方法及示例方法一:using MySql.Datausing MySql.Data.MySqlClient;其他操作跟SQL是差不多,无非就是前缀变成MySql了.补充:下面是连接字符串,供参考.MySqlConnection con = newMySql.Data.MySqlClient.MySqlConnection("Database='testdb';DataSource='localhost';User Id='db';Password='apple';charset='utf8'");con.Open();MySqlCommand cmd = new MySqlCommand();cmd.Connection = con;使用MYSQL推出的MySQL Connector/Net is an driver for MySQL该组件为MYSQL为访问MYSQL数据库设计的.NET访问组件。
安装完成该组件后,引用命名空间MySql.Data.MySqlClient;使用命令行编译时:csc /r:MySql.Data.dll test.cs方法二:通过ODBC访问MYSQL数据库访问前要先下载两个组件:和MYSQL的ODBC驱动(MySQL Connector/ODBC (MyODBC) driver)目前为3.51版安装完成后,即可通过ODBC访问MYSQL数据库方法三:使用CoreLab推出的MYSQL访问组件,面向.NET安装完成后,引用命名空间:CoreLab.MySql;使用命令编译时:csc /r:CoreLab.MySql.dll test.cs以下为访问MYSQL数据库实例编译指令:csc /r:CoreLab.MySql.dll /r:MySql.Data.dll test.csusing System;using ;using System.Text;using CoreLab.MySql;using System.Data.Odbc;using MySql.Data.MySqlClient;class ConnectMySql{public void Connect_CoreLab(){string constr = "User Id=root;Host=localhost;Database=qing;password=qing"; MySqlConnection mycn = new MySqlConnection(constr);mycn.Open();MySqlCommand mycm = new MySqlCommand("select * from shop",mycn); MySqlDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();mycn.Close();}public void Connect_Odbc(){//string MyConString ="DSN=MySQL;UID=root;PWD=qing";string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=test;" +"UID=root;" +"PASSWORD=qing;" +"OPTION=3";OdbcConnection MyConn = new OdbcConnection(MyConString);MyConn.Open();OdbcCommand mycm = new OdbcCommand("select * from hello",MyConn); OdbcDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();MyConn.Close();}public void Connect_Net(){string myConnectionString = "Database=test;Data Source=localhost;User Id=root;Password=qing";MySqlConnection mycn = new MySqlConnection(myConnectionString); mycn.Open();MySqlCommand mycm = new MySqlCommand("select * from hello",mycn); MySqlDataReader msdr = mycm.ExecuteReader();while(msdr.Read()){if (msdr.HasRows){Console.WriteLine(msdr.GetString(0));}}msdr.Close();mycn.Close();}public static void Main(){ConnectMySql ms = new ConnectMySql();ms.Connect_CoreLab();ms.Connect_Odbc();Connect_Net();}}1、用MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址:/projects/mysqldrivercs/在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中注:我下载的是版本是MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySQLDriverCS;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){MySQLConnection conn = null;conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);conn.Open();MySQLCommand commn = new MySQLCommand("set names gb2312", conn);commn.ExecuteNonQuery();string sql = "select * from exchange ";MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);DataSet ds = new DataSet();mda.Fill(ds, "table1");this.dataGrid1.DataSource = ds.Tables["table1"];conn.Close();}}}2、通过ODBC访问mysql数据库:参考:/china/community/Column/63.mspx1. 安装Microsoft :我安装的是mysql-connector-odbc-3.51.22-win32.msi2. 安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版3. 安装MySQL的ODBC驱动程序:我安装的是odbc_net.msi4. 管理工具-> 数据源ODBC –>配置DSN…5. 解决方案管理中添加引用Microsoft.Data.Odbc.dll(1.0.3300)6. 代码中增加引用using Microsoft.Data.Odbc;using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的using System.Text;using System.Windows.Forms;using Microsoft.Data.Odbc;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();Console.WriteLine("\n success, connected successfully !\n");string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";OdbcCommand cmd = new OdbcCommand(query, MyConnection);//处理异常:插入重复记录有异常try{cmd.ExecuteNonQuery();}catch(Exception ex){Console.WriteLine("record duplicate.");}finally{cmd.Dispose();}//***********************用read方法读数据到textbox********************** string tmp1 = null;string tmp2 = null;string tmp3 = null;query = "select * from test ";OdbcCommand cmd2 = new OdbcCommand(query, MyConnection);OdbcDataReader reader = cmd2.ExecuteReader();while (reader.Read()){tmp1 = reader[0].ToString();tmp2 = reader[1].ToString();tmp3 = reader[2].ToString();}this.textBox1.Text = tmp1 + " " + tmp2 + " " + tmp3;*///************************用datagridview控件显示数据表************************** string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString); OdbcDataAdapter oda = new OdbcDataAdapter("select * from customer ", MyConnection); DataSet ds = new DataSet();oda.Fill(ds, "employee");this.dataGridView1.DataSource = ds.Tables["employee"];*/MyConnection.Close();}}}文章出处:/course/4_webprogram//asp_netshl/2008429/112011.html 1、用MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址:/projects/mysqldrivercs/在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中注:我下载的是版本是MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySQLDriverCS;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){MySQLConnection conn = null;conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);conn.Open();MySQLCommand commn = new MySQLCommand("set names gb2312", conn);commn.ExecuteNonQuery();string sql = "select * from exchange ";MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);DataSet ds = new DataSet();mda.Fill(ds, "table1");this.dataGrid1.DataSource = ds.Tables["table1"];conn.Close();}}}2、通过ODBC访问mysql数据库:参考:/china/community/Column/63.mspx1. 安装Microsoft :我安装的是mysql-connector-odbc-3.51.22-win32.msi2. 安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版3. 安装MySQL的ODBC驱动程序:我安装的是odbc_net.msi4. 管理工具-> 数据源ODBC –>配置DSN…5. 解决方案管理中添加引用Microsoft.Data.Odbc.dll(1.0.3300)6. 代码中增加引用using Microsoft.Data.Odbc;using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试自动生成的using System.Text;using System.Windows.Forms;using Microsoft.Data.Odbc;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();Console.WriteLine("\n success, connected successfully !\n");string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";OdbcCommand cmd = new OdbcCommand(query, MyConnection);//处理异常:插入重复记录有异常try{cmd.ExecuteNonQuery();}catch(Exception ex){Console.WriteLine("record duplicate.");}finally{cmd.Dispose();}//***********************用read方法读数据到textbox**********************string tmp1 = null;string tmp2 = null;string tmp3 = null;query = "select * from test ";OdbcCommand cmd2 = new OdbcCommand(query, MyConnection);OdbcDataReader reader = cmd2.ExecuteReader();while (reader.Read()){tmp1 = reader[0].ToString();tmp2 = reader[1].ToString();tmp3 = reader[2].ToString();}this.textBox1.Text = tmp1 + " " + tmp2 + " " + tmp3;*///************************用datagridview控件显示数据表************************** string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString); OdbcDataAdapter oda = new OdbcDataAdapter("select * from customer ", MyConnection); DataSet ds = new DataSet();oda.Fill(ds, "employee");this.dataGridView1.DataSource = ds.Tables["employee"];*/MyConnection.Close();}}}文章出处:/course/4_webprogram//asp_netshl/2008429/112011.html1.连接:1.安装Microsoft 。
C#连接操作mysql实例
C#连接操作mysql实例第三⽅组件:Mysql.Data.dll说明:去官⽅⽹站下载Mysql.Data.dll,然后在项⽬中添加该组件的引⽤,在代码页⾥输⼊using Mysql.Data.MysqlClient,我们就可以顺利的使⽤该类库的函数建⽴连接了。
以下是⼏个常⽤函数:#region 建⽴MySql数据库连接/// <summary>/// 建⽴数据库连接./// </summary>/// <returns>返回MySqlConnection对象</returns>public MySqlConnection getmysqlcon(){string M_str_sqlcon = "server=localhost;user id=root;password=root;database=abc"; //根据⾃⼰的设置MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);return myCon;}#endregion#region 执⾏MySqlCommand命令/// <summary>/// 执⾏MySqlCommand/// </summary>/// <param name="M_str_sqlstr">SQL语句</param>public void getmysqlcom(string M_str_sqlstr){MySqlConnection mysqlcon = this.getmysqlcon();mysqlcon.Open();MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);mysqlcom.ExecuteNonQuery();mysqlcom.Dispose();mysqlcon.Close();mysqlcon.Dispose();}#endregion#region 创建MySqlDataReader对象/// <summary>/// 创建⼀个MySqlDataReader对象/// </summary>/// <param name="M_str_sqlstr">SQL语句</param>/// <returns>返回MySqlDataReader对象</returns>public MySqlDataReader getmysqlread(string M_str_sqlstr){MySqlConnection mysqlcon = this.getmysqlcon();MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);mysqlcon.Open();MySqlDataReader mysqlread = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);return mysqlread;}#endregion另⼀篇:测试环境:Windows XP + MySql 5.0.24 + Visual C# 2008 Exdivss EditionBy lucas 2008.12.291、⽤MySQLDriverCS连接MySQL数据库先下载和安装MySQLDriverCS,地址:在安装⽂件夹下⾯找到MySQLDriver.dll,然后将MySQLDriver.dll添加引⽤到项⽬中注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exeusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MySQLDriverCS;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){MySQLConnection conn = null;conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString); conn.Open();MySQLCommand commn = new MySQLCommand("set names gb2312", conn);commn.ExecuteNonQuery();string sql = "select * from exchange ";MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);DataSet ds = new DataSet();mda.Fill(ds, "table1");this.dataGrid1.DataSource = ds.Tables["table1"];conn.Close();}}}2、通过ODBC访问mysql数据库:参考:1. 安装Microsoft :我安装的是mysql-connector-odbc-3.51.22-win32.msi2. 安装MDAC 2.7或者更⾼版本:我安装的是mdac_typ.exe 2.7简体中⽂版3. 安装MySQL的ODBC驱动程序:我安装的是 odbc_net.msi4. 管理⼯具 -> 数据源ODBC –>配置DSN…5. 解决⽅案管理中添加引⽤ Microsoft.Data.Odbc.dll(1.0.3300)6. 代码中增加引⽤ using Microsoft.Data.Odbc;using System;using System.Collections.Generic;using ponentModel;using System.Drawing;using System.Linq; //vs2005好像没有这个命名空间,在c#2008下测试⾃动⽣成的using System.Text;using System.Windows.Forms;using Microsoft.Data.Odbc;namespace mysql{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +"SERVER=localhost;" +"DATABASE=inv;" +"UID=root;" +"PASSWORD=831025;" +"OPTION=3";OdbcConnection MyConnection = new OdbcConnection(MyConString);MyConnection.Open();Console.WriteLine("\n success, connected successfully !\n");string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";OdbcCommand cmd = new OdbcCommand(query, MyConnection);//处理异常:插⼊重复记录有异常try{cmd.ExecuteNonQuery();}catch(Exception ex){Console.WriteLine("record duplicate.");}finally{cmd.Dispose();}//MyConnection.Close();}}}使⽤⽰例:using System;using System.Configuration;using MySql.Data.MySqlClient;/// <summary>/// TestDatebase 的摘要说明/// </summary>public class TestDatebase{public TestDatebase(){//// TODO: 在此处添加构造函数逻辑//}public static void Main(String[] args){MySqlConnection mysql = getMySqlCon();//查询sqlString sqlSearch = "select * from student";//插⼊sqlString sqlInsert = "insert into student values (12,'张三',25,'⼤专')";//修改sqlString sqlUpdate = "update student set name='李四' where id= 3";//删除sqlString sqlDel = "delete from student where id = 12";//打印SQL语句Console.WriteLine(sqlDel);//四种语句对象//MySqlCommand mySqlCommand = getSqlCommand(sqlSearch, mysql); //MySqlCommand mySqlCommand = getSqlCommand(sqlInsert, mysql); //MySqlCommand mySqlCommand = getSqlCommand(sqlUpdate, mysql); MySqlCommand mySqlCommand = getSqlCommand(sqlDel, mysql);mysql.Open();//getResultset(mySqlCommand);//getInsert(mySqlCommand);//getUpdate(mySqlCommand);getDel(mySqlCommand);//记得关闭mysql.Close();String readLine = Console.ReadLine();}/// <summary>/// 建⽴mysql数据库链接/// </summary>/// <returns></returns>public static MySqlConnection getMySqlCon(){String mysqlStr = "Database=test;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306"; // String mySqlCon = ConfigurationManager.ConnectionStrings["MySqlCon"].ConnectionString;MySqlConnection mysql = new MySqlConnection(mysqlStr);return mysql;}/// <summary>/// 建⽴执⾏命令语句对象/// </summary>/// <param name="sql"></param>/// <param name="mysql"></param>/// <returns></returns>public static MySqlCommand getSqlCommand(String sql,MySqlConnection mysql){MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql);// MySqlCommand mySqlCommand = new MySqlCommand(sql);// mySqlCommand.Connection = mysql;return mySqlCommand;}/// <summary>/// 查询并获得结果集并遍历/// </summary>/// <param name="mySqlCommand"></param>public static void getResultset(MySqlCommand mySqlCommand){MySqlDataReader reader = mySqlCommand.ExecuteReader();try{while (reader.Read()){if (reader.HasRows){Console.WriteLine("编号:" + reader.GetInt32(0) + "|姓名:" + reader.GetString(1) + "|年龄:" + reader.GetInt32(2) + "|学历:" + reader.GetString(3));}}}catch (Exception){Console.WriteLine("查询失败了!");}finally{reader.Close();}}/// <summary>/// 添加数据/// </summary>/// <param name="mySqlCommand"></param>public static void getInsert(MySqlCommand mySqlCommand){try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("插⼊数据失败了!" + message);}}/// <summary>/// 修改数据/// </summary>/// <param name="mySqlCommand"></param>public static void getUpdate(MySqlCommand mySqlCommand){try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("修改数据失败了!" + message); }}/// <summary>/// 删除数据/// </summary>/// <param name="mySqlCommand"></param>public static void getDel(MySqlCommand mySqlCommand) {try{mySqlCommand.ExecuteNonQuery();}catch (Exception ex){String message = ex.Message;Console.WriteLine("删除数据失败了!" + message); }}}。
C#连接MySQL的两个简单代码示例
C#连接MySQL的两个简单代码⽰例实现代码⼀、使⽤的是mysql⾃带的驱动安装⼀下即可这是⼀个简单的例⼦。
在这⾥有个问题:dataset如果没设主键的话,可能会引起⼀些对数库操作的问题,⽐如会造成updata出现错误。
static void Main(string[] args){string sqlstr = "select * from manavatar";MySQLConnection DBConn = new MySQLConnection(new MySQLConnectionString("192.168.0.13", "flashdata", "root", "root", 3306).AsString); DBConn.Open();//MySQLDataAdapter myadap = new MySQLDataAdapter(sqlstr, conn);MySQLCommand DBComm = new MySQLCommand(sqlstr,DBConn);MySQLDataReader DBReader = DBComm.ExecuteReaderEx(); //DBComm.ExecuteReaderEx();MySQLDataAdapter DTAdapter = new MySQLDataAdapter(sqlstr,DBConn);DataSet myDataSet = new DataSet();DTAdapter.Fill(myDataSet,"manavatar");try{while (DBReader.Read()){//Console.WriteLine("11");Console.WriteLine("DBReader:{0},\t\t\tddddd:{1},\t\t {2}",DBReader.GetString(0), DBReader.GetString(1),DBReader.GetString(3));}Console.WriteLine("0000");}catch (Exception e){Console.WriteLine("读⼊失败!"+e.ToString());}finally{Console.WriteLine("DBReader关闭");Console.WriteLine("DBConn关闭");DBReader.Close();//DBConn.Close();}for (int i = 0; i < myDataSet.Tables["manavatar"].Rows.Count; i++){Console.WriteLine("{0}",myDataSet.Tables["manavatar"].Rows[2]["user"]);}}⽅法⼆、贴⼀份⽰例代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SELECT FIRSTNME INTO :firstname (4)FROM employeeWHERE LASTNAME = 'JOHNSON';(4)printf( "First name = %s\n", firstname );EXEC SQL CONNECT RESET; (5)return 0;}上面是一个简单的静态嵌入SQL语句的应用程序。
它包括了嵌入SQL的主要部分:(1)中的include SQLCA语句定义并描述了SQLCA的结构。
SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。
宿主变量可被SQL语句引用,也可以被C语言语句引用。
它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。
在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。
这时,应该保证数据库实例已经启动。
(4)是一条选择语句。
它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在 firstname变量中。
该语句返回一个结果。
可以通过游标返回多个结果。
当然,也可以包含update、insert和delete语句。
(5)最后断开数据库的连接。
从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。
这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。
如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”。
c语言用vc连接sql server 20002009/11/02 09:34 [sql server]1.提取单条记录db";值比较db";示表格db";etLength()*15;pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);}int i=0;_bstr_t vCol;用C语言来操作SQL SERVER数据库,采用ODBC开放式数据库连接进行数据的添加,修改,删除,查询等操作。
step1:启动SQLSERVER服务,例如:HNHJ,开始菜单 ->运行 ->net start mssqlserverstep2:打开企业管理器,建立数据库test,在test库中建立test表(a varchar(200),b varchar(200))step3:建立系统DSN,开始菜单 ->运行 ->odbcad32,添加->SQL SERVER名称:csql,服务器:HNHJ使用用户使用登录ID和密码的SQLSERVER验证,登录ID:sa,密码: 更改默认的数据库为:test...测试数据源,测试成功,即DNS添加成功。
文件完整代码1.据库操作中的添加,修改,删除,主要体现在SQL语句上2. 2.采用直接执行方式和参数预编译执行方式两种3.*/4.int main(){5.RETCODE retcode;6.UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",7.szUID[MAXNAME] = "sa",8.szAuthStr[MAXNAME] = "";9.接数据源10.境句柄11.retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);12.retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,13.(SQLPOINTER)SQL_OV_ODBC3,14.SQL_IS_INTEGER);15.接句柄16.retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv,&hdbc1);17.retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0);18.建并执行一条或多条SQL语句19./*20. 1.分配一个语句句柄(statement handle)21. 2.创建SQL语句22. 3.执行语句23. 4.销毁语句24.*/25.retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc1, &hstmt1);26.开数据源27./*28. 1.断开与数据源的连接.29. 2.释放连接句柄.30. 3.释放环境句柄(如果不再需要在这个环境中作更多连接)31.*/32.SQLDisconnect(hdbc1);33.SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);34.SQLFreeHandle(SQL_HANDLE_ENV, henv);35.return(0);36.}1.件查询,2.直接查询全部2.*/3.int main(){4.RETCODE retcode;5.UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",6.szUID[MAXNAME] = "sa",7.szAuthStr[MAXNAME] = "";8.UCHAR sql1[39] = "select b from test where a = 'aaa'";9.UCHAR sql2[35] = "select b from test where a = ?";10.UCHAR sql3[19] = "select b from test";11.12.retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);13.retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,14.(SQLPOINTER)SQL_OV_ODBC3,15.SQL_IS_INTEGER);16.retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv,&hdbc1);17.接数据源18.retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0);19.if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) {20.printf("连接失败!");21.} else {22.建并执行一条或多条SQL语句23./*24. 1.分配一个语句句柄(statement handle)25. 2.创建SQL语句26. 3.执行语句27. 4.销毁语句28.*/29.retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc1, &hstmt1);30.编译31.SQLPrepare(hstmt1,sql2,35); 定参数值32.SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);33.行34.SQLExecute(hstmt1);35.char list[5];36.SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0);37.SQLFetch(hstmt1);38.printf("%s\n",list);39.*/40.41.认一个结果集是否可用。
42. 2.将结果集的列绑定在适当的变量上。
43. 3.取得行44.*/45.查结果记录(如果有的话)46.SQLExecDirect (hstmt1,sql3,19);47.char list[5];48.SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0);49.do{50.retcode = SQLFetch(hstmt1);51.if(retcode == SQL_NO_DATA){52.break;53.}54.printf("%s\n",list);55.}while(1);56.57.开数据源58./*59. 1.断开与数据源的连接.60. 2.释放连接句柄.61. 3.释放环境句柄(如果不再需要在这个环境中作更多连接)62.*/63.SQLDisconnect(hdbc1);64.SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);65.SQLFreeHandle(SQL_HANDLE_ENV, henv);66.return(0);67.}创建数据源的过程代码:#include<>#inlcude<>#include<>#include<>#include<>#include<>#define SNO_LEN 30#define NAME_LEN 50#define DEPART_LEN 100#define SSEX_LEN 5int main(){/*Step 1 定义句柄和变量 *///以king开头的表示的是连接KingbaseES的变量//以server开头的表示的是连接SQLSERVER的变量SQLHENV kinghenv,serverhenv;SQLHDBC kinghdbc,serverhdbc;SQLHSTMT kinghstmt,serverhstmt;SQLRETURN ret;SQLCHAR sName[NAME_LEN],sDepart[DEPART_LEN],sSex[SSEX_LEN],sSno[SNO_LEN];SQLINTEGER sAge;SQLINTEGRR cbAge=0,cbSno=SQL_NTS,cbSex=SQL_NTS,cbName=SQL_NTS,cbDepart=SQL_NTS;/*Step 2 初始化环境*/ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&kinghenv);ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&setverhenv);ret=SQLSetEnvAttr(kinghenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0); ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0); /*Step 3 建立连接*/ret=SQLAllocHandle(SQL_HANDLE_DBC,kinghenv,&kinghdbc);ret=SQLAllocHandle(SQL_HANDLE_DBC,serverhenv,&serverhdbc);ret=SQLConnect(kinghdbc,"KingbaseES ODBC",SQL_NTS,"SYSTEM",SQL_NTS,"MANAGER",SQL_NTS);if(!SQL_SUCCEEDED(ret))return -1; //连接失败时返回错误值;ret=SQLConnect(serverhdbc,"SQLServer",SQL_NTS,"sa",SQL_NTS,"sa",SQL_NTS);if(!SQL_SUCCEEDED(ret))return -1; //连接失败时返回错误值;/*Step 4 初始化语句句柄*/ret=SQLAllocHandle(SQL_HANDLE_STMT,kinghdbc,&kinghstmt);ret=SQLSetStmtAttr(kinghstmt,SQL_ATTR_ROW_BIND_TYPE(SQLPOINTER) SQL_BIND_BY_COLUMN,SQL_IS_INTEGER);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);/*Step 5 两种方式执行语句*//*预编译带有参数的语句*/ret=SQLPrepare(sercerhstmt,"INSERT INTO STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(?,?,?,?,?)",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,SNO_LEN,0,sSno,0,&cbSNO); ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,SNAME_LEN,0,sName,0,&cbNam e);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,2,0,sSex,0,&cbSex);ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0,&sAge,0,&cbAge);ret=SQLBindParameter(serverhstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,DEPART_LEN,0,sDepart,0,&cbD epart);}/*执行SQL语句*/ret=SQLExecDirect(kinghstmt,"SELECT * FROM STUDENT",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(kinghstmt,1,SQL_C_CHAR,sSno,SNO_LEN,&cbSno);ret=SQLBindCol(kinghstmt,2,SQL_C_CHAR,sName,NAME_LEN,&cbName);ret=SQLBindCol(kinghstmt,3,SQL_C_CHAR,sSex,SSEX_LEN,&cbSex);ret=SQLBindCol(kinghstmt,4,SQL_C_LONG,&sAge,0,&cbAge);ret=SQLBindCol(kinghstmt,5,SQL_C_CHAR,sDepart,DEPART_LEN,&cbDepart);}/*Step 6 处理结果集并执行预编译后的语句*/while((ret=SQLFetch(kinghstmt))!=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR) printf("Fetch error\n");else ret=SQLExecute(serverhstmt);}/*Step 7 中止处理*/SQLFreeHandle(SQL_HANDLE_STMT,kinghstmt);SQLDisconnect(kinghdbc);SQLFreeHandle(SQL_HANDLE_DBC,kinghdbc);SQLFreeHandle(SQL_HANDLE_ENV,kinghenv);SQLFreeHandle(SQL_HANDLE_STMT,serverhstmt);SQLDisconnect(serverhdbc); SQLFreeHanlde(SQL_HANDLE_DBC<serverhdbc); SQLFreeHanlde(SQL_HANDLE_ENV,serverhenv); return 0;}。