一般ADO.Net连接数据库的基本步骤如下:
//数据库连接一般分为两种:1.Windwos身份验证登录;2.Sql Server身份验证登录
/*步骤:
* 1:using System.Data.SqlClient;//引入命名空间
* 2:声明连接数据库字符串
* 3:创建SqlConnection对象
* 4:调用对象的Open方法就可以打开数据库了
* 5:关闭数据库
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//引入命名空间
namespace ADO.Net
{
class _1Connection连接关闭数据库
{
public static void Main(string[] args)
{
//数据库连接一般分为两种:1.Windwos身份验证登录;2.Sql Server身份验证登录
/*步骤:
* 1:using System.Data.SqlClient;//引入命名空间
* 2:声明连接数据库字符串
* 3:创建SqlConnection对象
* 4:调用对象的Open方法就可以打开数据库了
* 5:关闭数据库
*/
//Server=.;//本机登录直接.即可
//string conStr= "Server=.;database=***;Integrated Security=True";
string conStr = "Server=服务器名(ip地址);user=sa;pwd=***;database=数据库名";
SqlConnection mySqlCon = new SqlConnection(conStr);
/*mySqlCon.Open();
Console.WriteLine("数据库已经被成功打开了");
//关闭数据库
//1:close
mySqlCon.Close();//虽然C#有垃圾回收机制(GC),但是在使用完数据库最好自己关闭来提高性能
Console.WriteLine("数据库已经被成功关闭");
*/
//也可以用using语句,try...catch...finally语句等来关闭数据库提高性能
//2:using
//using (mySqlCon)
//{
// mySqlCon.Open();
// Console.WriteLine("数据库已经被成功打开了");
//}
//3:try...catch...finally
try
{
mySqlCon.Open();
Console.WriteLine("数据库已经被成功打开了");
}
catch
{
}
finally
{
mySqlCon.Close();
Console.WriteLine("数据库已经被成功关闭");
}
}
}
}
连接了数据库后,就可以进行操作了,增删改操作要用到Command对象:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace ADO.Net
{
class _2Command操作数据
{
public static void Main(string[] Args)
{
/*
* Command常用属性
* 1:CommandText:要下达至数据源的命令
* 2:CommandTimeout:出错时等待时间
* Command三种方法:
* 1:ExecuteNonQuery():不返还任何值,一般应用于insert,update,delete语句
* 2:ExecuteScalar():返回一个值,一般用于只返回一个值的语句,比如数据统计的count
* 语句,Max,Min等
* 3:ExecuteReader(): 返回一个IDataReader,可用于迭代返回记录
*/
string conStr = "Server=服务器名(ip地址);user=sa;pwd=***;database=数据库名";
SqlConnection mySqlCon = new SqlConnection(conStr);
try
{
//创建Command对象
//mySqlCon.Open();
//string sql = "select * from EMP_Lanbo1";//sql语句
//SqlCommand mySqlcom = new SqlCommand(sql, mySqlCon);
//mySqlcom.CommandTimeout = 2;//2秒内如果还没连接成功就认为出错了
//Console.WriteLine("创建Command对象成功");
//更改数据(增,删,改)
mySqlCon.Open();
string sqlNoQuery = "insert Student values('e','女','32','软件')";
SqlCommand mySqlCom = new SqlCommand(sqlNoQuery, mySqlCon);
mySqlCom.ExecuteNonQuery();
Console.WriteLine("修改数据成功");
//mySqlCon.Open();
//string str = "select max(age) from Student";
//SqlCommand mySqlCom = new SqlCommand(str, mySqlCon);
//int i = Convert.ToInt32(mySqlCom.ExecuteScalar());
//Console.WriteLine("年龄最大的是:" + i);
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
finally
{
mySqlCon.Close();
}
}
}
}
数据库中:
增加一条记录后:
查用到的是DataReader对象:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace ADO.Net
{
class _3DataReader读取数据
{
static void Main(string[] args)
{
string conStr = "Server=服务器名(ip地址);user=sa;pwd=***;database=数据库名";
SqlConnection mySqlCon = new SqlConnection(str);
try
{
mySqlCon.Open();
string sql1 = "select * from Student";
SqlCommand mySqlCom = new SqlCommand(sql1, mySqlCon);
//查
//ExecuteReader返回一个DataReader对象
SqlDataReader mySqlDR = mySqlCom.ExecuteReader();
if (mySqlDR.HasRows)//有行,说明有内容
{
Console.WriteLine("表中存在数据");
Console.WriteLine("一共" + mySqlDR.FieldCount + "个字段");
}
else
Console.WriteLine("表中不存在数据");
Console.WriteLine();
//DataReader常用方法:
//1:GetDataTypeName:获取指定字段的数据类型
//2:GetName:获取指定字段的名称
//3:GetOrdinal:获取指定字段名称在记录中的顺序
//4:Read:读取下一条数据
//5:GetValue:获得一条记录中指定字段的数据,注意,要先Read才能取值
//6:GetValues:获得一条记录中全部字段的数据
//7:close:关闭DataReader对象
for (int i = 0; i < mySqlDR.FieldCount; i++)
{
Console.WriteLine("数据类型:"+mySqlDR.GetDataTypeName(i));
Console.WriteLine("字段名:"+mySqlDR.GetName(i));
Console.WriteLine("字段" + mySqlDR.GetName(i) + "在表中顺序为:" + mySqlDR.GetOrdinal(mySqlDR.GetName(i)));
}
Console.WriteLine();
//一次读取每条记录中的指定字段的值
//while(mySqlDR.Read())
//{
// for (int i = 0; i < mySqlDR.FieldCount; i++)
// Console.Write(mySqlDR.GetValue(i)+" ");
// Console.WriteLine();
//}
//Console.WriteLine();
//一次读取每条记录中所欲字段的值
while (mySqlDR.Read())
{
object[] myObj = new object[mySqlDR.FieldCount];
mySqlDR.GetValues(myObj);
foreach (var i in myObj)
Console.Write(i + " ");
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine(mySqlDR.IsClosed);
if(!mySqlDR.IsClosed)
mySqlDR.Close();
}
catch(Exception e)
{
Console.WriteLine(e.Message.ToString());
}
finally
{
mySqlCon.Close();
}
}
}
}
结果如下: