2023年6月21日发(作者:)

C#操作sqlServer数据库⼯具:vs2015 、SqlServer数据库的连接及打开关闭1. VS2015建⽴⼀个c#的控制台应⽤程序,必须要包含两个using 指令:using ;using ent;(SqlClient是因为我选⽤的数据库为sqlserver,若连接的数据库是mysql则⽤MySqlClient)2. 建⽴⼀个连接数据库对象: SqlConnection conn = new SqlConnection();3. 设置tionString属性:获取或设置⽤于打开 SQL Server 数据库的字符串。如tionString ="Server=服务器名;DataBase=数据库名;Trusted_Connection=SSPI";(其中Trusted_Connection为false时,连接中指定⽤户 ID和密码。 当true,当前的 Windows 帐户凭据⽤于⾝份验证这是Windows⾝份验证登陆的;可识别的值为true, false, yes, no,和sspi(强烈建议),这等同于true。)这些字段的含义即对应值的要求都可以在官⽅⽂档上查到4. 打开数据库:();(使⽤tionString所指定的属性设置打开数据库连接)要查看是否打开可以打印属性,会返回⼀个 ConnectionState 枚举(Open表⽰打开,Closed表⽰关闭等具体可查看官⽅⽂档),⽤于指⽰ SqlConnection 的状态。5. 关闭数据库:();执⾏数据库语⾔增、删、改、查1. 定义⼀个String类型的sql语句:sql_insert = "insert into Table_1(uid,name) values(@UID,@NAME)";(要传的参数前⾯要加@字符,sql语句可以写增删改查,这⾥以插⼊数据为例)2. 创建⼀个SqlCommand对象执⾏sql语句:SqlCommand cmd_insert = new SqlCommand(sql_insert, conn);(参数为索要执⾏的sql语句和已连接的数据库)3. 为参数赋值:定义SqlParameter对象qlParameter para1 = new SqlParameter("@UID", "100");(参数为参数名和值)4. 将赋值后的参数写⼊: cmd_(para1);(eNonQuery()可以返回执⾏ Transact-SQL 语句受影响的⾏数。所以可以通过这个返回值查看sql语句是否执⾏)5. 为参数赋值和写⼊参数可写到⼀起,⽤hValue("@NAME","Bit");6. 查询执⾏完后要接收查询到的数据,⽤SqlDataReader对象接收,如 SqlDataReader reader = eReader();7. 读取数据,⽤()⽅法循环读取,Read()⽅法会让 SqlDataReader 前进到下⼀条记录(具体使⽤看下⾯代码)调⽤存储过程Sqlserver management创建存储过程数据库->可编程性->存储过程->存储过程->写见下图->执⾏USE [testDB]GO/****** Object: StoredProcedure [dbo].[testInsert] Script Date: 2018/7/25 10:06:44 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- Batch submitted through debugger: |7|0|C:UsersibitDocumentsSQL Server Management ER PROCEDURE [dbo].[testInsert] @Name varchar(30), @Uid intAS INSERT INTO Table_1(name,uid)VALUES(@Name,@Uid)1. 创建⼀个SqlCommand 的对象:SqlCommand cmd = new SqlCommand("存储过程名字",conn))(赋第⼀个参数为存储过程名字,第⼆个为数据库连接对象)2. 设置dType的属性: dType = Procedure;(StoredProcedure表⽰执⾏的是存储过程)3. 给存储过程要传的参数赋值:SqlParameter para = new SqlParameter("@NAME", r, 20);(第⼀个为参数名字记得加@,第⼆个为参数类型,第三个为长度,如果参数类型为int,那么第三个参数我们就不需要写) para .Value = "Bit"(为参数赋值)4. 将参数添加的SqlCommand对象: (para);批量写⼊数据1. 在内存中创建⼀个数据表对象: DataTable dt = new DataTable();2. 为数据表添加列ge(new DataColumn[])(注意这⾥的列⼀定要跟你数据库⾥的列字段,类型⼀致,SqlBulkCopy不是根据表的ColumnName来匹配的,⽽是根据ColumnIndex匹配,也就是说你的表 字段必须跟数据库的表字段完全⼀致(Index的排序要跟数据表的⼀样)。就算你该字段不打算给他插⼊值,也要建个DataColumn。包括⾃增ID.不需要给他值就好了,否则会出错)3. 创建SqlBulkCopy对象⽤于批量操作:SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);(参数为SqlConnection 类型,即要操作的数据库)4. 设置ationTableName属性,即批量操作的表名,如ationTableName = "Table_1";5. 设置ize属性,即批量操作的⾏数,如ize = ;(也就是内存中创建的表的⾏数)6. 循环创建要写⼊的数据:创建⼀个DataRow对象,并使其结构与内存中表结构相同,为这⾏记录赋值,赋值的时候DataRow对象实际上是个数组,0代表你之前创建的DataTable 对象的第⼀列,为每列附上值就可以了,最后将附好值的这⼀⾏加到DataTable对象上(具体写法见下⾯代码)7. 将内存表中的数据写到服务器上的⽬标表中,⽤oServer (DataTable)⽅法

附:(感觉⽅法还需要封装以下)using System;using c;using ;using ent;using stics;using ;using ;using ;namespace A006{ class Program { //连接数据库 public void Conn(SqlConnection conn) { //获取或设置⽤于打开 SQL Server 数据库的字符串 tionString = "Server=DESKTOP-8VD7LNG;DataBase=testDB;Trusted_Connection=SSPI"; try { //打开数据库 (); //打印数据库连接状态 ine(); } catch (SqlException ex) { ine("数据库打开失败!"); ine(e); } } //insert public void Insert(SqlConnection conn) {

String sql_insert = "insert into Table_1(uid,name) values(@UID,@NAME)"; SqlCommand cmd_insert = new SqlCommand(sql_insert, conn); SqlParameter para1 = new SqlParameter("@UID", "106"); cmd_(para1); SqlParameter para2 = new SqlParameter("@NAME", "Bit106"); cmd_(para2); //对连接执⾏ Transact-SQL 语句并返回受影响的⾏数 int res_1 = cmd_eNonQuery(); ine(res_1); } //update public void update(SqlConnection conn) {

string sql_update = "update Table_1 set name=@NAME where id=@ID;"; SqlCommand cmd_update = new SqlCommand(sql_update, conn); cmd_hValue("@ID", "3"); cmd_hValue("@NAME", "Bit100"); int res_2 = cmd_eNonQuery(); ine(res_2); } //delete public void delete(SqlConnection conn) { string sql_delete = "DELETE FROM Table_1 WHERE name=@NAME;"; SqlCommand cmd_delete = new SqlCommand(sql_delete, conn); cmd_hValue("@NAME", "Bit106"); int res_3 = cmd_eNonQuery(); ine(res_3); } //select

public void select(SqlConnection conn) { //定义查询语句 String sql = "select * from Table_1"; SqlCommand sqlComm = new SqlCommand(sql, conn); //接收查询到的sql数据 SqlDataReader reader = eReader(); //读取数据 while (()) { //打印 ine(reader["uid"].ToString()); ine(reader["name"].ToString()); } (); } //调⽤存储过程 public void procedure(SqlConnection conn) { SqlCommand cmd = new SqlCommand("testInsert", conn); dType = Procedure;//告知执⾏存储过程 //传参数 hValue("@Uid", "106"); hValue("@Uid", "106"); hValue("@Name", "Bit106"); int res = eNonQuery(); ine(res); } //批量写⼊ public void insertBulk(SqlConnection conn) { DataTable dt = GetTableSchema();

SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); //获取服务器上⽬标表的名称 ationTableName = "Table_1"; ize = ; for (int i = 0,j=107; i < 100; i++,j++) { //创建与该表结构相同的⾏ DataRow dr = (); dr[1] = j; dr[2] = "Bit" + j; (dr); } if (dt != null && != 0) { try { //将内存中数据表的记录写到服务器上的⽬标表中 oServer(dt); } catch(Exception ex) { ine(e); }

} //ine(("插⼊{0}条记录", 100)); } static DataTable GetTableSchema() { //内存中建⼀个数据表 DataTable dt = new DataTable(); //获取该数据表的列 ge(new DataColumn[] { new DataColumn("id",typeof(int)), new DataColumn("uid",typeof(int)), new DataColumn("name",typeof(string))}); return dt; } static void Main(string[] args) { //建⽴⼀个连接数据库的对象 SqlConnection conn = new SqlConnection(); Program p = new Program(); (conn); //查 // (conn); //增 //(conn); //改 //(conn); //删 //删 //(conn); //调⽤存储过程 //ure(conn); //批量写⼊ Bulk(conn); (); e(); ne(); } }}

2023年6月21日发(作者:)

C#操作sqlServer数据库⼯具:vs2015 、SqlServer数据库的连接及打开关闭1. VS2015建⽴⼀个c#的控制台应⽤程序,必须要包含两个using 指令:using ;using ent;(SqlClient是因为我选⽤的数据库为sqlserver,若连接的数据库是mysql则⽤MySqlClient)2. 建⽴⼀个连接数据库对象: SqlConnection conn = new SqlConnection();3. 设置tionString属性:获取或设置⽤于打开 SQL Server 数据库的字符串。如tionString ="Server=服务器名;DataBase=数据库名;Trusted_Connection=SSPI";(其中Trusted_Connection为false时,连接中指定⽤户 ID和密码。 当true,当前的 Windows 帐户凭据⽤于⾝份验证这是Windows⾝份验证登陆的;可识别的值为true, false, yes, no,和sspi(强烈建议),这等同于true。)这些字段的含义即对应值的要求都可以在官⽅⽂档上查到4. 打开数据库:();(使⽤tionString所指定的属性设置打开数据库连接)要查看是否打开可以打印属性,会返回⼀个 ConnectionState 枚举(Open表⽰打开,Closed表⽰关闭等具体可查看官⽅⽂档),⽤于指⽰ SqlConnection 的状态。5. 关闭数据库:();执⾏数据库语⾔增、删、改、查1. 定义⼀个String类型的sql语句:sql_insert = "insert into Table_1(uid,name) values(@UID,@NAME)";(要传的参数前⾯要加@字符,sql语句可以写增删改查,这⾥以插⼊数据为例)2. 创建⼀个SqlCommand对象执⾏sql语句:SqlCommand cmd_insert = new SqlCommand(sql_insert, conn);(参数为索要执⾏的sql语句和已连接的数据库)3. 为参数赋值:定义SqlParameter对象qlParameter para1 = new SqlParameter("@UID", "100");(参数为参数名和值)4. 将赋值后的参数写⼊: cmd_(para1);(eNonQuery()可以返回执⾏ Transact-SQL 语句受影响的⾏数。所以可以通过这个返回值查看sql语句是否执⾏)5. 为参数赋值和写⼊参数可写到⼀起,⽤hValue("@NAME","Bit");6. 查询执⾏完后要接收查询到的数据,⽤SqlDataReader对象接收,如 SqlDataReader reader = eReader();7. 读取数据,⽤()⽅法循环读取,Read()⽅法会让 SqlDataReader 前进到下⼀条记录(具体使⽤看下⾯代码)调⽤存储过程Sqlserver management创建存储过程数据库->可编程性->存储过程->存储过程->写见下图->执⾏USE [testDB]GO/****** Object: StoredProcedure [dbo].[testInsert] Script Date: 2018/7/25 10:06:44 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- Batch submitted through debugger: |7|0|C:UsersibitDocumentsSQL Server Management ER PROCEDURE [dbo].[testInsert] @Name varchar(30), @Uid intAS INSERT INTO Table_1(name,uid)VALUES(@Name,@Uid)1. 创建⼀个SqlCommand 的对象:SqlCommand cmd = new SqlCommand("存储过程名字",conn))(赋第⼀个参数为存储过程名字,第⼆个为数据库连接对象)2. 设置dType的属性: dType = Procedure;(StoredProcedure表⽰执⾏的是存储过程)3. 给存储过程要传的参数赋值:SqlParameter para = new SqlParameter("@NAME", r, 20);(第⼀个为参数名字记得加@,第⼆个为参数类型,第三个为长度,如果参数类型为int,那么第三个参数我们就不需要写) para .Value = "Bit"(为参数赋值)4. 将参数添加的SqlCommand对象: (para);批量写⼊数据1. 在内存中创建⼀个数据表对象: DataTable dt = new DataTable();2. 为数据表添加列ge(new DataColumn[])(注意这⾥的列⼀定要跟你数据库⾥的列字段,类型⼀致,SqlBulkCopy不是根据表的ColumnName来匹配的,⽽是根据ColumnIndex匹配,也就是说你的表 字段必须跟数据库的表字段完全⼀致(Index的排序要跟数据表的⼀样)。就算你该字段不打算给他插⼊值,也要建个DataColumn。包括⾃增ID.不需要给他值就好了,否则会出错)3. 创建SqlBulkCopy对象⽤于批量操作:SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);(参数为SqlConnection 类型,即要操作的数据库)4. 设置ationTableName属性,即批量操作的表名,如ationTableName = "Table_1";5. 设置ize属性,即批量操作的⾏数,如ize = ;(也就是内存中创建的表的⾏数)6. 循环创建要写⼊的数据:创建⼀个DataRow对象,并使其结构与内存中表结构相同,为这⾏记录赋值,赋值的时候DataRow对象实际上是个数组,0代表你之前创建的DataTable 对象的第⼀列,为每列附上值就可以了,最后将附好值的这⼀⾏加到DataTable对象上(具体写法见下⾯代码)7. 将内存表中的数据写到服务器上的⽬标表中,⽤oServer (DataTable)⽅法

附:(感觉⽅法还需要封装以下)using System;using c;using ;using ent;using stics;using ;using ;using ;namespace A006{ class Program { //连接数据库 public void Conn(SqlConnection conn) { //获取或设置⽤于打开 SQL Server 数据库的字符串 tionString = "Server=DESKTOP-8VD7LNG;DataBase=testDB;Trusted_Connection=SSPI"; try { //打开数据库 (); //打印数据库连接状态 ine(); } catch (SqlException ex) { ine("数据库打开失败!"); ine(e); } } //insert public void Insert(SqlConnection conn) {

String sql_insert = "insert into Table_1(uid,name) values(@UID,@NAME)"; SqlCommand cmd_insert = new SqlCommand(sql_insert, conn); SqlParameter para1 = new SqlParameter("@UID", "106"); cmd_(para1); SqlParameter para2 = new SqlParameter("@NAME", "Bit106"); cmd_(para2); //对连接执⾏ Transact-SQL 语句并返回受影响的⾏数 int res_1 = cmd_eNonQuery(); ine(res_1); } //update public void update(SqlConnection conn) {

string sql_update = "update Table_1 set name=@NAME where id=@ID;"; SqlCommand cmd_update = new SqlCommand(sql_update, conn); cmd_hValue("@ID", "3"); cmd_hValue("@NAME", "Bit100"); int res_2 = cmd_eNonQuery(); ine(res_2); } //delete public void delete(SqlConnection conn) { string sql_delete = "DELETE FROM Table_1 WHERE name=@NAME;"; SqlCommand cmd_delete = new SqlCommand(sql_delete, conn); cmd_hValue("@NAME", "Bit106"); int res_3 = cmd_eNonQuery(); ine(res_3); } //select

public void select(SqlConnection conn) { //定义查询语句 String sql = "select * from Table_1"; SqlCommand sqlComm = new SqlCommand(sql, conn); //接收查询到的sql数据 SqlDataReader reader = eReader(); //读取数据 while (()) { //打印 ine(reader["uid"].ToString()); ine(reader["name"].ToString()); } (); } //调⽤存储过程 public void procedure(SqlConnection conn) { SqlCommand cmd = new SqlCommand("testInsert", conn); dType = Procedure;//告知执⾏存储过程 //传参数 hValue("@Uid", "106"); hValue("@Uid", "106"); hValue("@Name", "Bit106"); int res = eNonQuery(); ine(res); } //批量写⼊ public void insertBulk(SqlConnection conn) { DataTable dt = GetTableSchema();

SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); //获取服务器上⽬标表的名称 ationTableName = "Table_1"; ize = ; for (int i = 0,j=107; i < 100; i++,j++) { //创建与该表结构相同的⾏ DataRow dr = (); dr[1] = j; dr[2] = "Bit" + j; (dr); } if (dt != null && != 0) { try { //将内存中数据表的记录写到服务器上的⽬标表中 oServer(dt); } catch(Exception ex) { ine(e); }

} //ine(("插⼊{0}条记录", 100)); } static DataTable GetTableSchema() { //内存中建⼀个数据表 DataTable dt = new DataTable(); //获取该数据表的列 ge(new DataColumn[] { new DataColumn("id",typeof(int)), new DataColumn("uid",typeof(int)), new DataColumn("name",typeof(string))}); return dt; } static void Main(string[] args) { //建⽴⼀个连接数据库的对象 SqlConnection conn = new SqlConnection(); Program p = new Program(); (conn); //查 // (conn); //增 //(conn); //改 //(conn); //删 //删 //(conn); //调⽤存储过程 //ure(conn); //批量写⼊ Bulk(conn); (); e(); ne(); } }}