C#操作sqlserver跟操作其他数据没有太大差别,但是又一些细节要注意一下。

在安装sqlserver时不要选择默认实例,如果是则需要更改设置,还有远程连接要去连接服务中设置一下,如端口1433等,这些百度一下就可以了。下面开始介绍一些最基本的数据库操作。

(一)建立数据库

        static void SQLDBCreate(string dbname)
{
//通过连接到本身存在的db master连接到sqlserver
string connStr = "Server = localhost;User Id=sa;Password=******; database = master";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
//如果当前数据库是正在状态是无法删除的,所以把master设置为当前状态,若数据库存在则删除重建
//此处出问题一般为数据安装过程中为默认实例,改为特定实例,然后启动服务中心,在ip3更改相关ip为本机,并把tcp端口改为1433
//其他更改为是,同时在服务中restart即可以
string sql= "use master;" +
"IF DB_ID(N'{0}') IS NOT NULL " +
"DROP DATABASE {0};" +
"CREATE DATABASE {0}";
sql = string.Format(sql, dbname); try
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
Console.WriteLine("createdb_success");
}
catch (Exception ex)
{
Console.WriteLine("createdb_failed:"+ex.Message);
}
finally
{
conn.Close();
}
}

(二)在建立的数据库中建表

        static void TableCreate(string dbname,string tablename)
{
string connStr = "Server = localhost;User Id=sa;Password=********; database = {0}";
connStr = string.Format(connStr, dbname);
string sql= "IF OBJECT_ID(N'{1}..{0}', N'U') IS NOT NULL " +
"DROP TABLE {0};" +
"CREATE TABLE {0}" +
"(ID [int] NOT NULL Primary Key," +
"Name [char] (40) NULL ," +
"Price [char] (40) NULL," +
"dPrice [char] (40) NULL)";
sql = string.Format(sql, tablename, dbname);
SqlConnection conn = new SqlConnection(connStr);
conn.Open(); try
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
Console.WriteLine("createtable_success");
}
catch(Exception ex)
{
Console.WriteLine("createtable_failed:" + ex.Message);
}
finally
{
conn.Close();
}
}

(三)想表中添加数据

        static void FillTable(string dbname,string tablename)
{
string connStr = "Server = localhost;User Id=sa;Password=********; database = {0}";
connStr = string.Format(connStr, dbname);
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
string sql= "INSERT INTO {0}(ID,name,price,dPrice)" +
"values(@d,@a,@b,@c)";
sql = string.Format(sql, tablename);
try
{
for(int i=;i<;i++)
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@d", i);
cmd.Parameters.AddWithValue("@a", Guid.NewGuid());
cmd.Parameters.AddWithValue("@b", i.ToString());
cmd.Parameters.AddWithValue("@c", i.ToString());
cmd.ExecuteNonQuery();
}
Console.WriteLine("filltable_success");
}
catch(Exception ex)
{
Console.WriteLine("filltable_failed:" + ex.Message);
}
finally
{
conn.Close();
}
}

(四)删除表格

        static void DeleteTable(string dbname,string tablename)
{
string connStr = "Server = localhost;User Id=sa;Password=*********; database = {0}";
connStr = string.Format(connStr, dbname);
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
string sql= "IF OBJECT_ID(N'{0}..{1}', N'U') IS NOT NULL " +
"DROP TABLE {1};";
sql = string.Format(sql, dbname, tablename);
try
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
Console.WriteLine("deletetable_success");
}
catch(Exception ex)
{
Console.WriteLine("deletetable_failed:" + ex.Message);
}
finally
{
conn.Close();
}
}

(五)读取数据库中数据

        static void TransToDS(string dbname,string tablename)
{
string connStr = "Server =.;User Id=sa;Password=*******; database = {0}";
connStr = string.Format(connStr, dbname);
SqlConnection conn = new SqlConnection(connStr);
conn.Open(); string sql = "select *from {0}";
sql = string.Format(sql, tablename);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter apt = new SqlDataAdapter(cmd);
SqlCommandBuilder sb = new SqlCommandBuilder(apt);
DataSet ds = new DataSet(); try
{ apt.Fill(ds);
Console.WriteLine("transTods_success");
}
catch (Exception ex)
{
Console.WriteLine("transTods_failed:" + ex.Message);
}
finally
{
conn.Close();
}
DataTable dt = ds.Tables[]; //int i = 0;
//foreach(DataRow dr in ds.Tables[0].Rows)
//{
// if(i>50)
// {
// ds.Tables[0].Rows.RemoveAt(i);
// }
// i++;
//} int count = dt.Rows.Count;
for(int i=;i<count;i++)
{
if(i>)
{
//dt.Rows.RemoveAt(51);
dt.Rows[i].Delete();
}
}
apt.Update(ds); int j = ;
foreach (DataRow dr in ds.Tables[].Rows)
{
Console.WriteLine(dr["Price"]+" "+j+" "+dr.RowState);
j++;
}
}

关于数据操作在此多说一点,可以用sqldatareader进行读取,插入修改数据等也可以采用insert等方法进行处理,在此采用dataset先把数据表缓存到本地表中进行操作,如果只需要。看需要自己选择,采用dataset包括更新数据表等都很方便,只需要用sqldataadapter进行一下update就可以。

注意:

1、在对datatable进行遍历并进行删除操作时,不要用foreach,其不允许进行增加和删除

2、如果数据表需要update,那么数据表进行增删是要用add和delete,不要用import和remove,因为在进行update时,是根据datarow的rowstate属性进行操作的。比如delete时,并不是删除row,而是把相应行的rowstate进行了修改,update时就根据此属性进行处理,本地数据表只有当采用acceptchange时才会根据rowstate属性进行数据表的相应删除。而采用import或者remove时则rowstate属性则会存在问题,比如采用remove时,整行移除后相应的rowstate也不存在,而update时,由于相应的行没有rowstate属性值,所以远程数据库不会进行删除。import倒入后rowstate状态不明,所以也无法进行远程数据库的数据更新。

总之,采用update时并不是拿本地datatable与sqlserver数据表进行对比然后更新,而是根据datatable中的datarow的rowstate属性直接修改sqlserver数据表。

C#操作sql server的更多相关文章

  1. PHP操作SQL Server 2008/2012

    PHP操作SQL Server驱动,微软官方提供2个版本,Version 2.0 和 Version 3.0 Version 2.0 版本支持的操作系统有: Windows Server 2003 S ...

  2. 使用php来访问操作sql server

    使用php来访问操作sql server 在此分成三步走: 第一部:查看配置,下载文件 首先查看自己的php和sql server版本 Php文件输入echo PHP_VERSION  运行脚本就可以 ...

  3. SQL Server学习之路(七):Python3操作SQL Server数据库

    0.目录 1.前言 2.准备工作 3.简单测试语句 4.提交与回滚 5.封装成类的写法 1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话, ...

  4. Nodejs 操作 Sql Server

    Nodejs 操作 Sql Server Intro 最近项目需要爬取一些数据,数据有加密,前端的js又被混淆了,ajax请求被 hook 了,有些复杂,最后打算使用 puppeteer 来爬取数据. ...

  5. [转]C#操作SQL Server数据库

    转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlComman ...

  6. 数据库SQL Server2012笔记(七)——java 程序操作sql server

    1.crud(增删改查)介绍:create/retrieve/update/delete 2.JDBC介绍 1)JDBC(java database connectivity,java数据库连接) 2 ...

  7. Python 学习笔记:Python 操作 SQL Server 数据库

    最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...

  8. ORM之Dapper操作Sql Server和MySql数据库

    1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net P ...

  9. 基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD

    完成一个RESTful服务,提供几个访问接口,用来操作较简单的联系人信息,数据保存在Sql Server数据库中. 1.使用STS创建工程. 使用STS创建RESTful工程,可以参考: <用S ...

  10. c#操作SQL Server入门总结

    我是一名c#新手.本文只是我是常学习的随笔. 一.下载SQL server软件 听说下载开发板是最好的(开发板如果只是用来学习.研究不算是侵权).在安装的时候,我也遇到了很多问题,在公司的电脑安装第一 ...

随机推荐

  1. 4款黑科技级别的宝藏APP,能够轻松满足你的多种需求,请低调收藏

    有没有这样几款软件,在你每次一换新手机的时候就会立刻重新安装下来,感觉自己已经完全离不开它们?今天就来给大家分享几个非常好用的APP. 一.小羊搜搜 在生活中人人都有自己的爱好,无论你是喜欢影视.小说 ...

  2. Airtest之web自动化(一)

    Airtest之web自动化(一) [此文档有许多涉及到gif动图的地方,请全屏观看]   了解Airtest: 简介: Airtest是由网易团队开发的一款自动化框架,前期运用与游戏测试(通过截图识 ...

  3. 问题:程序编译通过,但是执行时报错:coredump

    问题描述: 在一个客户现场搭建环境时,遇到了一个棘手的问题,C代码编译通过后,无法正常运行,启动会出现“coredump”错误. 运行环境为新搭建的AIX6.1,数据库为Oracle11.2.0.2. ...

  4. Flask基础(16)-->WTForms表单创建和简单验证

    Flask基础(16)-->WTForms表单创建和简单验证 前言:使用Flask_WTF需要配置参数SECRET_KEYCSRF_ENABLED是为了CSRF(跨站请求伪造)保护.SECRET ...

  5. MangoDB的下载和安装

    ​ 前面已经简单介绍了MongoDB,今天我们就要正式学习他了,话不多说,咱先来安装. 1.现在MongoDB已经到了4.0版本,咱先去官网下载,MongoDB官网传送门,下载的版本信息如下,点击Do ...

  6. .Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关

    1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderEx ...

  7. 虚拟现实研究经典问卷Presence Questionnaire (PQ) 详细介绍

    虚拟现实(VR)是一种沉浸式体验,它的作用就是将用户完全包裹在一个人为构建出的(数字)虚拟世界中,让用户在这个新环境中得到不一样的体验,或完成一些现实中不能完成的任务.所以让体验者相信“我身处此中”非 ...

  8. 二次函数,为什么a>0就可以知道开口向上.

    最近自考. 学习高等数学. 学习高等数学过程中发现高中数学不会,,于是乎开始补高中数学. 学习高中数学过程中又发现初中数学有的不会,,于是乎开始补初中数学.. 可怕(→_→). 今天遇到一个二次函数, ...

  9. python编程基础之三十五

    系统的魔术方法:系统的魔术方法特别多,但是也都特别容易懂,简单的讲就是对系统的内置函数进行重写,你需要什么效果就重写成什么样, 比如说len()方法针对的对象本来没有自定义类的对象,但是当你重写了__ ...

  10. 代码审计-phpcms9.6.2任意文件下载漏洞

    漏洞文件: phpcms\modules\content\down.php 1.在download函数中对文件的校验部分 首先 if(preg_match('/(php|phtml|php3|php4 ...