想了解SqlServer数据库的语句及一些操作整理的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于sqlserver数据库基本语句的相关问题,此外,我们还将为您介绍关于C#操作SqlServ
想了解SqlServer数据库的语句及一些操作整理的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于sqlserver数据库基本语句的相关问题,此外,我们还将为您介绍关于C#操作SqlServer数据库的常用对象,及其方法、c#操作sqlserver数据库的简单示例、SQL Server 2000数据库同步 同步两个SQLServer数据库的内容、SQL Server数据库与SQL Server数据库的并发症有不同的排序规则,而不是服务器的默认值?的新知识。
本文目录一览:- SqlServer数据库的语句及一些操作整理(sqlserver数据库基本语句)
- C#操作SqlServer数据库的常用对象,及其方法
- c#操作sqlserver数据库的简单示例
- SQL Server 2000数据库同步 同步两个SQLServer数据库的内容
- SQL Server数据库与SQL Server数据库的并发症有不同的排序规则,而不是服务器的默认值?
SqlServer数据库的语句及一些操作整理(sqlserver数据库基本语句)
临近年终,在工作之余对工作和学习中遇到的问题以及常用的一些知识点做了些整理,以备后用。本文涉及的内容为数据库。
1 对于主键设置了Identity的表,在删除表中数据后再往表中插入数据,Identity列不是从1起始了,如果想删除数据后Indentity列仍从1起始,可以用下面代码来删除数据。
truncate table tablename DBCC CHECKIDENT(tablename,RESEED,1)
2 判断指定表在数据库中是否存在
if exists(select name from sysobjects where name='tablename' and type='u')
3 判断指定列在指定表中是否存在
if exists(select * from sys.columns,sys.tables where sys.columns.object_id = sys.tables.object_id and sys.tables.name='tablename' and sys.columns.[name]='columnname')
4 在编写代码生成器之类的程序的时候,通常需要取出数据库中所有的表名以及表中字段的一些基本信息,如字段长度、字段类型、描述等。实现上面要求的sql语句如下:
--取数据库中表的集合 select * from sysobjects where xtype='u' order by name --取表中字段的一些基本信息 select sys.columns.name,--字段名 sys.types.name as typename,--字段类型 sys.columns.max_length,--字段长度 sys.columns.is_nullable,--是否可空 (select count(*) from sys.identity_columns where sys.identity_columns.object_id = sys.columns.object_id and sys.columns.column_id = sys.identity_columns.column_id ) as is_identity ,--是否自增 (select value from sys.extended_properties where sys.extended_properties.major_id = sys.columns.object_id and sys.extended_properties.minor_id = sys.columns.column_id ) as description --注释 from sys.columns,sys.tables,sys.types where sys.columns.object_id = sys.tables.object_id and sys.columns.system_type_id=sys.types.system_type_id and sys.tables.name='tablename' order by sys.columns.column_id
5 在存储过程中使用事务
create procedure procname as begin tran --执行sql语句 if @@ERROR!=0 begin rollback tran --失败 end else begin commit tran --成功 end
6 清除数据库日志
DUMP TRANSACTION DatabseName WITH NO_LOG BACKUP LOG DatabseName WITH NO_LOG DBCC SHRINKFILE(DatabseLogName,1) --DatabseName为数据库名称 --DatabseLogName为日志文件名,可以通过下面语句得到 --select name from sysfiles
还有一种比较简单的方法是分离数据库,删除日志文件,再附加数据库,这样产生的日志文件只有500多k。
下面介绍几个常用的系统存储过程和函数
7 db_name() 得到数据库名称
select db_name() Test (1 行受影响)
8 object_id 可以得到对象在系统中的编号,对象包括表、视图、存储过程等。如果不存在返回null,所以也可以用来判断表是否存在。
select object_id('objectname') --判断表是否存在 if object_id('tablename') is not null
9 sp_helptext 用来得到视图、存储过程等对象的文本,可以很快速找到,不过会改变视图或存储过程的格式。所以这个系统存储过程我通常都是用来查看,如果要修改一个存储过程我还是会通过树形菜单去找到存储过程然后修改保存。
sp_helptext 'objectname'
10 parsename,可以得到对象名称的指定部分,该函数有两个参数,第一个为对象名称,第二个为指定部分的代号。
select parsename('oec2003.databasename.dbo.tablename',1) --对象名称返回tablename select parsename('oec2003.databasename.dbo.tablename',2) --Schema名称返回dbo select parsename('oec2003.databasename.dbo.tablename',3) --数据库名称返回databasename select parsename('oec2003.databasename.dbo.tablename',4) --服务器名称返回oec2003
先就写这么多吧,后面整理出来的会陆续补上
C#操作SqlServer数据库的常用对象,及其方法
首先放出所常用的对象:
System.Data.SqlClient.SqlConnection
System.Data.SqlClient.SqlCommand
System.Data.SqlClient.SqlDataAdapter
SqlConnection对象用于连接SqlServer数据库,SqlCommand对象用于执行sql语句,至于SqlDataAdapter对象,后面再说。
一、SqlConnection对象
先看代码:
string strConn = "server=''(local)'';database=''mydatabase'';uid=''root'';pwd=''123456''";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
SqlConnection conn = new SqlConnection(strConn); //创建连接对象
conn.Open();//打开连接
很容易理解,会将上面代码写成:
string strConn = "server=''(local)'';database=''mydatabase'';uid=''root'';pwd=''123456''";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
SqlConnection对象就是只起到连接数据库作用。
二、SqlCommand对象
SqlCommand对象用于数据的增删改查操作,所以下面介绍SqlCommand类下面的一些方法:
1、ExecuteNonQuery();
ExecuteNonQuery(),看方法名字有Non,可以联想到其可能没有返回值。其实它的返回值类型为int型。当select操作时,返回-1;当执行增加,删除,修改数据时,返回影响的行数。(PS,此方法意义在于执行数据的增、删、改操作)
2、ExecuteReader();
ExecuteReader(),该方法用于数据的查询,执行后的返回值类型是SqlDataReader,可以通过SqlDataReader对象下面的Read()方法来对数据集进行遍历,有两种提取数据的手段:SqlDataReader对象["列名"].ToString()和SqlDataReader对象[索引].ToString()(这里的索引值从0开始)
代码例子:
string strConn = "server=''(local)'';database=''mydatabase'';uid=''root'';pwd=''123456''";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select * from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
SqlDataReader reader = cmd.ExecuteReader(); //执行sql语句
while(reader.Read()){//遍历查询到的数据集
int id = int.Parse(reader[0].ToString());//通过索引得到该列的值
}
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
3、ExecuteScaler();
它的返回值类型是Object类型。也是用于查询,只有确定查询之后的结果只有一个值得情况下,可以使用此方法。
string strConn = "server=''(local)'';database=''mydatabase'';uid=''root'';pwd=''123456''";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select stu_name from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
string stuId = (string)cmd.ExecuteScaler(); //执行sql语句
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
三、SqlDataAdapter对象
上面的查询方法在处理少量返回数据时非常方便,但遇到需要处理大量返回数据集时,那么需要用到SqlDataAdapter对象。
SqlDataAdapter类提供多个构造方法:
1、SqlDataAdapter(strSql,strConn) ,strSql为字符串形式sql语句,strConn跟上面代码中的strConn变量一样
2、SqlDataAdapter(strSql, conn) ,strSql为字符串形式sql语句,conn为SqlConnection对象
3、SqlDataAdapter(cmd) , cmd为SqlCommand对象
我们常常使用SqlDataAdapter来填充一个数据表,其中可以有两种操作,可以填充DataSet对象,也可以填充DataTable对象。
string strConn = "server=''(local)'';database=''mydatabase'';uid=''root'';pwd=''123456''";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select * from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
SqlDataAdapter sda = new SqlDataAdapter(sc);
DataSet ds = new DataSet();
sda.Fill(ds);
//DataTable dt = new DataTable();
//sda.Fill(dt);
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
其实SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,所以上面代码会在DataSet中创建一个新的DataTable,这个新的DataTable会拥有名为返回数据的相应列名,但是DataTable对象的名称是Table,我们有时想得到的table名是我们自定义的,则可以添加:
//创建SqlDataAdapter对象之后,创建DataSet对象之前,“Table”是默认的Table对象名
sda.TableMappings.Add("Table","MyTableName");
或者,直接使用Fill()方法的重载:
sda.Fill(ds, "MyTableName");
以上就是本次总结c#操作SqlServer常用的类和方法,记录下来,方便以后可以查阅。
c#操作sqlserver数据库的简单示例
1.在用windows模式登陆sql server 数据库 简历一个student的数据库,然后新建查询:
create table student
(
id int auto_increment primary key,
name char(10) not null,
sex char(10) not null,
age char(10) not null,
)
2.在vs中新建一个项目,输入一下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.sqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string connSting;
connSting = "server=localhost;database=student;Integrated Security=True ";
sqlConnection sConn = new sqlConnection(connSting);
try
{
sConn.open();
}
catch (Exception ex)
{
Console.WriteLine("链接错误:" + ex.Message);
}
string sqlMessage=null;
sqlMessage = "select * from student";
sqlCommand sCmd = new sqlCommand(sqlMessage,sConn);
sqlDataReader sdr = null;
try
{
sdr = sCmd.ExecuteReader();
Console.WriteLine(" 姓名 性别 年龄 ");
while (sdr.Read())
{
Console.WriteLine(sdr["name"] +""+ sdr["sex"]+"" + sdr["age"]);
}
sConn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
}