ADO.NET中的基本SQL操作
基本的SQL语句:
1. 检索数据
使用查询:SELECT、FROM关键字
查看所有:SELECT * FROM <table>
选择特定的列:SELECT employeeid, firstname, lastname FROM employees
使用WHERE子句:SELECT firstname, lastname, country FROM employees WHERE country='USA'
使用通配符:LIKE '....',用 % 代替一坨字符,用 _ 代替一个字符,用 [] 定义一个子界,用 [^] 定义反子界
集合:BETWEEN 400 AND 500,或者 IN ('Seattle', 'London')
逻辑连接词:AND NOT OR
排序:OERDER BY <column> [ASC|DESC],可以用 , 来分隔任意多列
2. 插入数据
INSERT INTO <table>
(<column 1>,<column 2>,...<column N>)
VALUES (<value1>,<value2>,...<value N>)
3. 更新数据
UPDATE <table>
SET <column 1>=<value 1>,<column 2>=<value 2>,...<column N>=<value N>
WHERE <predicate>
4. 删除数据
DELETE FROM <table>
WHERE <predicate>
然后就是SQL数据类型与C#数据类型的不同:
数值数据
SQL C#
bigint long
bit bool
decimal decimal
float double
int int
Real float
Smallint short
Tinyint byte
字符串数据
SQL: char, nchar, text, ntext, varchar, nvarchar
C#: string
日期时间
SQL: DateTime, smallDateTime
C#: SqlDateTime
二进制
SQL: binary, image, varbinary
C#: byte[]
货币数据类型
SQL: money, smallmoney
C#: decimal
其它
SQL C#
cursor X
sql_variant Object
table X
timestamp byte[]
uniqueidentifier System.Guid
采用我昨天看到的两个ADO.NET组件——SqlConection 和 SqlCommand ,结合 SqlDataReader ,就可以实现对SQL Server的基本操作了,下面提供一个完整的例子,大家可以从中看到一些良好的编程风格,尤其是对异常处理的那一部分,堪称初学者必学之作:
using System;
using System.Data;
using System.Data.SqlClient;
class SQLServerProvider
{
static void Main(string[] args)
{
// 建立连接字符串
string connString=@"server=(local)\ipc; integrated security=true;database=northwind";
// 建立查询字符串
string sql=@"select * from employees";
// 声明连接和 datareader 变量
SqlConnection conn=null;
SqlDataReader reader=null;
try
{
// 打开连接
conn=new SqlConnection(connString);
conn.Open();
// 执行查询
SqlCommand cmd=new SqlCommand(sql,conn);
reader=cmd.ExecuteReader();
// 显示输出头
Console.WriteLine("该程序使用 SQL Server Data Provider。");
Console.WriteLine("查询数据库 {0} 使用查询 {1}\n",conn.Database,cmd.CommandText);
Console.WriteLine("First Name\tLast Name\n");
// 处理结果数据集
while (reader.Read())
{
Console.WriteLine("{0}|{1}",reader["FirstName"].ToString().PadLeft(10),reader[1].ToString().PadLeft(10));
}
}
catch (Exception err)
{
Console.WriteLine("Error: "+err);
}
finally
{
// 关闭连接
reader.Close();
conn.Close();
}
}
}
我的SQL Server 配置是在本机上的,一个叫做ipc的服务,其中安装了Micro$oft的Northwind示例数据库。看不懂的请Email我,或者干脆买一本《C#数据库入门经典(第2版)》,自己对着看。这是一个控制台程序,不需要窗体,直接编译就可以运行,作用是查询employees表中的Firstname和Lastname两个列。其实查询的时候是所有列都查了,但是在WriteLine的时候只输出这两列而已。