SQLServer 数据库操作
SqlConnection 类 表示到 SQL Server 数据库的连接。 此类不能被继承。
1.主要属性
- DataSource: 要连接的 SQL Server 的实例的名称。
- Database: 获取当前数据库的名称或打开连接后要使用的数据库的名称。
- ConnectionString: 连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数。 默认值为一个空字符串。
- ConnectionTimeout: 获取终止尝试并生成错误之前在尝试建立连接时所等待的时间。
2.示例
string connString = "Server= ;Database= ;UID= ;PWD= ;"; //Server=实例名称;Database=数据库名称t;UID=用户名;PWD=密码;
SqlConnection conn = new SqlConnection(connString); //创建SqlConnection 实例
conn.Open(); //打开连接
....
conn.Close(); //关闭连接
或者:
string connString = "Server= ;Database= ;UID= ;PWD= ;"; //Server=实例名称;Database=数据库名称t;UID=用户名;PWD=密码;
SqlConnection conn = new SqlConnection(); //创建SqlConnection 实例
conn.ConnectionString = connString; //设置ConnectionString
conn.Open(); //打开连接
....
conn.Close(); //关闭连接
上面两种方式都使用Close()方法来释放资源,比较繁琐,可以使用using()方法来取代,以及数据库连接信息可以在config文件中配置,方便后期维护。
//config文件中的配置
<connectionStrings>
<add name="SQLConnection" connectionString="Server= ;Database= ;UID= ;PWD= ;" providerName="System.Data.SqlClient" />
</connectionStrings>
//数据库连接
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString))
SqlCommand 类 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。 此类不能被继承。
1.主要属性
- CommandType: 表示执行SQL操作的类型,有以下3中类型:
StoredProcedure 存储过程名,
TableDirect 表名,
Text SQL 文本命令(默认为 Text) - CommandText: 执行的 SQL 语句。
- Connection: 获取或设置 SqlCommand 的此实例使用的 SqlConnection。
- Parameters: SQL 语句或存储过程的参数。
- **CommandTimeout:**获取或设置在终止尝试执行命令并生成错误之前的等待时间。
2.主要方法
- ExecuteReader: 将 CommandText 发送到 Connection,并生成 SqlDataReader。主要适用:SELECT语句。
- ExecuteNonQuery: 对连接执行 Transact-SQL 语句并返回受影响的行数。适用:UPDATE、INSERT 和 DELETE 语句。
- ExecuteScalar: 执行查询,并返回由查询返回的结果集中的第一行的第一列。 其他列或行将被忽略。适用:SELECT语句。
3.示例
public class Program
{
static void Main(string[] args)
{
//ExecuteReader()方法
FunExecuteReader();
// ExecuteScalar()方法
FunExecuteScalar();
//ExecuteNonQuery()方法
FunExecuteNonQuery();
}
/// <summary>
/// ExecuteNonQuery()方法
/// </summary>
public static void FunExecuteNonQuery()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.Text; //默认 Text
cmd.CommandText = "Update Student SET name='王丽' Where id='1004'";
cmd.Connection = conn;
conn.Open();
//对连接执行 Transact-SQL 语句并返回受影响的行数。
int id = (Int32)cmd.ExecuteNonQuery();
Console.ReadKey();
}
}
/// <summary>
/// ExecuteScalar()方法
/// </summary>
public static void FunExecuteScalar()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.Text; //默认 Text
cmd.CommandTimeout = 30;
cmd.CommandText = "SELECT * FROM Student";
cmd.Connection = conn;
conn.Open();
//查询返回的结果集中的第一行的第一列
int id = (Int32)cmd.ExecuteScalar();
Console.ReadKey();
}
}
/// <summary>
/// ExecuteReader()方法
/// </summary>
public static void FunExecuteReader()
{
List<Student> StuList = new List<Student>();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.Text; //默认 Text
cmd.CommandTimeout = 30;
cmd.CommandText = "SELECT * FROM Student";
cmd.Connection = conn;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Student stu = new Student();
stu.id = Convert.ToInt32(reader["id"]);
stu.name = reader["name"].ToString();
stu.password = reader["password"].ToString();
stu.score = Convert.ToInt32(reader["score"]);
StuList.Add(stu);
}
if (StuList != null)
{
foreach (Student stu in StuList)
{
Console.WriteLine(stu.ToString());
}
}
Console.ReadKey();
}
}
}
官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.data.sqlclient?view=netframework-4.7.2