用C#联接SQL有两种连接方式,字符串连接和配置文件连接。一个连接字符串的例子是对数据库文件NORTHWEND.MDF的连接
Data Source=.\SQLEXPRESS AttachDbFilename=C:\...\NORTHWND.MDF
Integrated Security=True Connect Timeout=30 User Instance=True
数据源的值是.\SQLEXPRESS,这里“.”可以写成(local)或者localhost,表示是本机数据库。\SQLEXPRESS表示数据库NORTHWEND.MDF是免费产品。由于数据库是文件形式,添加了AttachDbFilename说明。
另外的例子是对于安装在服务器的数据库,例如本机安装的数据库,使用SqlClient连接字符串。连接到AdventureWorks2008的连接字符串示例如下:
Data Source=.Initial Catalog=AdventureWorks2008Integrated Security=True
对于SQL Server身份验证,使用指定用户名和密码,这里星号表示有效用户名和密码。
"Persist Security Info=FalseUser ID=*****Password=*****"
+"Initial Catalog=AdventureWorksServer=MySqlServer"
配置文件是可以按需要更改的XML文件。开发人员可以使用配置文件来更改设置,而不必重编译应用程序。
建议不要在代码中嵌入连接字符串。如果服务器的位置更改,应用程序将需要重新编译。此外,编译成应用程序源代码的未加密连接字符串可以使用MSIL反汇编程序(ildasm.exe)查看而泄密。为了避免将连接字符串存储在代码中,可以将代码存储在ASP.NET应用程序的web.config文件中以及Windows应用程序的app.config文件中。
使用配置文件可以避免记忆连接字符串细节的负担,记忆配置文件的设置过程比记忆连接字符串的细节要容易,因为设置过程按向导进行,智能提示有助于获取连接字符串。下面是VS2010设置配置文件的连接字符串。
具体做法给你推荐一本书:《C#编程指南》,清华大学出版社,2011年1月出版,相关内容有数据库的下载安装、可视化编程、ADO、SQL的FILESTREAM、以及O/R设计器(对象关系设计器)等。在Google或百度输入书名,作者,出版社,有好几家网上书店出售,最低75折,送到家。目前还未在书店上架。
连接Access数据库:DataSet daset = new DataSet()
string strfilepath = "provider=microsoft.jet.oledb.4.0data source=连接Access数据库.mdb"//先在debug文件夹下放一个数据库文件 连接Access数据库.mdb
string select = "select * from 员工信息表"//定义连接数据源
//声明一个数据连接
OleDbConnection conn = new OleDbConnection(strfilepath)
OleDbDataAdapter adapter = new OleDbDataAdapter(select, conn)
try
{
adapter.Fill(daset)//填充数据
if (daset.Tables[0].Rows.Count >1)//判断是否有符合条件的数据记录
{
dataGridView1.DataSource = daset.Tables[0]//把数据赋值给datagridview
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString())
}
finally
{
//关闭数据库
conn.Close()
conn.Dispose()
daset.Dispose()
}
//=========连接SQL Server===============
DataSet daset = new DataSet()
string connsqlserver = @"server=.database=student"//连接本地数据库和数据库名
//string connsqlserver="data source=.database=student"//这样也可以
string selectsql = "select * from 学号"//查询语句、内容
SqlConnection conn = new SqlConnection(connsqlserver)//连接数据库
SqlDataAdapter adapter = new SqlDataAdapter(selectsql, conn)
try
{
conn.Open()
if (conn.State == ConnectionState.Closed)
conn.Open()
adapter.Fill(daset)
if (daset.Tables[0].Rows.Count >1)
{
dataGridView1.DataSource = daset.Tables[0]
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString())
}
finally
{
conn.Close()
conn.Dispose()
daset.Dispose()
}
可以用多种方法,比如说用ODBC对excel数据库进行 *** 作,或者说用excel 的COM接口进行编程。我找到一个例子关键代码如下://创建并写入Excel文件
void CRWExcel::WriteToExcel()
{
CDatabase database
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"// Excel安装驱动
CString sExcelFile = "c:\\demo.xls"// 要建立的Excel文件
CString sSql
TRY
{
// 创建进行存取的字符串
sSql.Format("DRIVER={%s}DSN=''''FIRSTROWHASNAMES=1READONLY=FALSECREATE_DB=\"%s\"DBQ=%s",
sDriver, sExcelFile, sExcelFile)
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// 创建表结构(姓名、年龄)
sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)"
database.ExecuteSQL(sSql)
// 插入数值
sSql = "INSERT INTO demo (Name,Age) VALUES (''徐景周'',26)"
database.ExecuteSQL(sSql)
sSql = "INSERT INTO demo (Name,Age) VALUES (''徐志慧'',22)"
database.ExecuteSQL(sSql)
sSql = "INSERT INTO demo (Name,Age) VALUES (''郭徽'',27)"
database.ExecuteSQL(sSql)
}
// 关闭数据库
database.Close()
}
CATCH_ALL(e)
{
TRACE1("Excel驱动没有安装: %s",sDriver)
}
END_CATCH_ALL
}
// 读取Excel文件
void CRWExcel::ReadFromExcel()
{
CDatabase database
CString sSql
CString sItem1, sItem2
CString sDriver
CString sDsn
CString sFile = "Demo.xls"// 将被读取的Excel文件名
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver()
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox("没有安装Excel驱动!")
return
}
// 创建进行存取的字符串
sDsn.Format("ODBCDRIVER={%s}DSN=''''DBQ=%s", sDriver, sFile)
TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false, false, sDsn)
CRecordset recset(&database)
// 设置读取的查询语句.
sSql = "SELECT Name, Age "
"FROM demo "
"ORDER BY Name "
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly)
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue("Name ", sItem1)
recset.GetFieldValue("Age", sItem2)
// 移到下一行
recset.MoveNext()
}
// 关闭数据库
database.Close()
}
CATCH(CDBException, e)
{
// 数据库 *** 作产生异常时...
AfxMessageBox("数据库错误: " + e->m_strError)
}
END_CATCH
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)