浅谈ADO.NET数据库脚本

这次我使用ADO.NET来插入一条数据,到数据库中。主用到存储过程。我不想每次都是用SQL文本的形式了,那样始终没有进步~~~

下面首先,我把我这次练习要用到的数据库脚本,贴出来:

 USE master --使用系统数据库
 GO
 IF EXISTS(SELECT * FROM sysdatabases WHERE name=N'DB_MyStudentLife')
 DROP DATABASE [DB_MyStudentLife]; --如果要创建的数据库存在的话,就删除
 GO
 CREATE DATABASE [DB_MyStudentLife] --创建数据库
 GO
 USE [DB_MyStudentLife]  --使用数据库
 GO
 IF EXISTS(SELECT * FROM sysobjects WHERE name=N'MyClass')
 DROP TABLE [MyClass]   --如果要创建的数据表存在的话,就删除(注意sysobjects,一定要全部是小写的,不然有错误,不能写成大写的。)
 GO
 CREATE TABLE MyClass        --创建数据表
 (
  C_ID INT NOT NULL PRIMARY KEY,    --班级编号
  C_Name NVARCHAR(200) not null,    --班级名称
  C_Descr nvarchar(max) not null    --班级简介

 );
 GO
 IF EXISTS(SELECT * FROM sysobjects WHERE name=N'MyStudent')
 DROP TABLE MyStudent
 GO
 CREATE TABLE MyStudent
 (
 S_ID int not null primary key, --学号
 S_Name nvarchar(50) not null,     --姓名
 S_Gender char(2) not null,      --性别
 S_Address nvarchar(max) not null ,    --地址
 S_Phone nvarchar(50)not null,     --电话
 S_Age int not null,       --年龄
 S_Birthday datetime not null,     --生日
 S_CardID int not null,       --身份证号码
 S_CID int not null references MyClass(C_ID) --班级编号

 );

接着大家选中刚才执行脚本,创建好的数据库,然后使用我下面的数据,向数据库表里面添加数据吧

 insert into MyClass(C_ID,C_Name,C_Descr)values(1,'软件1108班','武汉软件工程职业学院');
 insert into MyClass(C_ID,C_Name,C_Descr)values(2,'软件1107班','武汉软件工程职业学院');
 insert into MyClass(C_ID,C_Name,C_Descr)values(3,'实验班','武汉软件工程职业学院');
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('1','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('2','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('3','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('4','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('5','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('6','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('7','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('8','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('9','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('10','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('11','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('12','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('13','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('14','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('15','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('16','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);
 insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values('17','李四','男','22','1992-09-26','111111111','11232131234',N'深圳宝安石岩',1);

说明一下,等会我要向MyClass表中插入数据,现在为这个表创建一个插入的存储过程:

IF OBJECT_ID('Ins_ClasseD','P') IS NOT NULL
 DROP PROCEDURE Ins_ClasseD
 GO
 CREATE PROCEDURE Ins_ClasseD
 @C_ID int ,
 @C_Name nvarchar(200) ,
 @C_Descr nvarchar(max)
 AS
 INSERT INTO dbo.MyClass
   ( C_ID, C_Name, C_Descr )
 VALUES ( @C_ID, -- C_ID - int
    @C_Name, -- C_Name - nvarchar(200)
    @C_Descr -- C_Descr - nvarchar(max)
    );

 GO

下面开始程序实现:

我是复习,ADO.NET,现在就随便建了一个控制台的应用程序,来开始我的测试:

注意;在下面的例子中,为了尽可能简单易于理解,我没有把连接字符串的那部分代码,放到配置文件中。

如果要放的话,要用到System.Configuration命名空间,还有一个ConfigurationManager类..具体的细节就不说了。

请看具体实现代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace ADO.NET插入一条数据到数据库中
{
 class Program
 {
  //连接字符串
  private static string sqlCon = "server=.;database=DB_MyStudentLife;uid=sa;pwd=Password_1";
  static void Main(string[] args)
  {
   //1创建连接对象(连接字符串)
   SqlConnection scon = new SqlConnection(sqlCon);

   //2创建命令对象(为命令对象设置属性)
   SqlCommand scmd = new SqlCommand();
   scmd.CommandText = "Ins_ClasseD";
   scmd.CommandType = CommandType.StoredProcedure; //这里我使用存储过程来插入数据
   scmd.Connection = scon;

   //3打开数据库连接
   scon.Open();

   //设置参数
   scmd.Parameters.Add(new SqlParameter("@C_ID",6));
   scmd.Parameters.Add(new SqlParameter("@C_Name", "测试班"));
   scmd.Parameters.Add(new SqlParameter("@C_Descr", "软件测试技术"));
   //4发送命令
   int result= scmd.ExecuteNonQuery();

   //5处理数据
   if (result > 0)
   {
    Console.WriteLine("插入数据成功");
   }
   else
   {
    Console.WriteLine("插入数据失败");
   }
   //6最后一步,差点忘记了,一定要关闭连接
   scon.Close();

   Console.ReadKey();

  }
 }
}

程序执行玩之后的效果图:

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • 用C#对ADO.NET数据库完成简单操作的方法

    数据库访问是程序中应用最普遍的部分.随着C#和ADO.NET的引入,这种操作变得更简单.这篇文章将示范四种最基础的数据库操作.  ● 读取数据.其中包括多种数据类型:整型,字符串,日期型.  ● 写数据.如读数据一样,我们也需要写入多种类型的数据.这可以通过SQL语句来完成.  ● 更新或修改数据.我们将再次用到SQL语句.  ● 删除数据.用SQL实现.  上述的操作都要基于Microsoft Access 2000数据库,但是,我们要对连接字符串进行简单的修改才能使用SQL或其他ADO数据.

  • ADO.NET数据库访问技术

    一. ADO.NET的定义 ADO.NET来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新一代.NET数据库的访问模型,是目前数据库程序设计人员用来开发基于.NET的数据库应用程序的主要接口.它利用.NET Data Provider(数据提供程序)进行数据库的连接和访问,通过ADO.NET数据库程序能够使用各种对象来访问符合条件的数据库内容,让提供数据库管理系统的各个厂商可以根据此标准开放对应的.NET Data Provider,这样设计数据库应用程序人员

  • 浅谈ADO.NET数据库脚本

    这次我使用ADO.NET来插入一条数据,到数据库中.主用到存储过程.我不想每次都是用SQL文本的形式了,那样始终没有进步--- 下面首先,我把我这次练习要用到的数据库脚本,贴出来: USE master --使用系统数据库 GO IF EXISTS(SELECT * FROM sysdatabases WHERE name=N'DB_MyStudentLife') DROP DATABASE [DB_MyStudentLife]; --如果要创建的数据库存在的话,就删除 GO CREATE DA

  • 浅谈三种数据库的 SQL 注入

    目录 SQL 注入原理 SQL 注入分类 1. 数字型注入 2. 字符型注入 3. 其他类型 常见数据库的注入 SQL Server MySQL Oracle SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. SQL 注入分类 1. 数字型注入 当输入的参数为整型时,则有可能存在数字型注入漏洞. 假设存在一条

  • 浅谈android中数据库的拷贝

    SQLiteDatabase不支持直接从assets读取文件,所以要提前拷贝数据库.在读取数据库时,先在项目中建立assets文件夹用于存放外部文件,将数据库文件拷到该目录下. 代码方法: /** * 拷贝数据库至file文件夹下 * @param dbName 数据库名称 */ private void initAddressDB(String dbName) { //1,在files文件夹下创建同名dbName数据库文件过程 File files=getFilesDir();//获取/dat

  • 浅谈入门级oracle数据库数据导入导出步骤

    oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp命令导入导出,避免第三方工具版本差异引起的问题,同时效率更高,但特别注意:采用命令时要注意所使用的用户及其权限等细节. 3.在目标数据库导入时需要创建与导出时相同的用户名(尽量一致),并赋予不低于导出时用户的权限:同时还需创建与原数据库相同的表空间名,若本地数据库已存在相同的表空间,则只能进行表空间

  • 浅谈为什么Mysql数据库尽量避免NULL

    在Mysql中很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性.但我们常在一些Mysql性能优化的书或者一些博客中看到观点:在数据列中,尽量不要用NULL 值,使用0,-1或者其他特殊标识替换NULL值,除非真的需要存储NULL值,那到底是为什么?如果替换了会有什么好处?同时又有什么问题呢?那么就看下面: (1)如果查询中包含可为NULL的列,对Mysql来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂. (2

  • 浅谈一下mysql数据库底层原理

    1.数据库事务的基本特性. 原子性: 事务中的所有操作要么全部提交成功,要么全部失败回滚. 场景:UPDATE cs_user SET age = 18 , gender = '女' WHERE id = 4.要么全部更新要么更新失败,不会出现age更新成功,gender更新失败. 一致性: 据库总是从给一个一致性的状态转换到另一个一致性的状态. 场景:比如规定某个表的字段age大于等于12小于18时,字段type为青少年,而数据库中存在age=16的时候,type='儿童'. 隔离性: 一个事

  • 浅谈NodeJs之数据库异常处理

    本文介绍了NodeJs之数据库异常处理,分享给大家,具体如下: NodeJs版本:4.4.4 数据库链接错误 使用nodejs处理异常最麻烦不过,这里我抛开nodejs提供的domain和一些第三方库专门处理的东西.操作数据库是我们常用的功能.通过回调,我们这里会有很多err出没. 如下: var pool = require('../db.js'); var runtimeLog = require('../log.js').getLogger('runlog'); var Promise =

  • 浅谈SQL SERVER数据库口令的脆弱性

    跟踪了一下SQL SERVER数据库服务器的登录过程,发现口令计算是非常脆弱的,SQL SERVER数据库的口令脆弱体现两方面: 1.网络登陆时候的口令加密算法 2.数据库存储的口令加密算法. 下面就分别讲述: 1.网络登陆时候的口令加密算法 SQL SERVER网络加密的口令一直都非常脆弱,网上有很多写出来的对照表,但是都没有具体的算法处理,实际上跟踪一下SQL SERVER的登陆过程,就很容易获取其解密的算法:好吧,我们还是演示一下汇编流程: 登录类型的TDS包跳转到4126a4处执行 00

  • 浅谈mssql access数据库 top分页方法

    但是有利也有弊,它要求排序字段必须构成唯一记录,且select后的字段列表中,不允许出现与排序字段同名的字段.虽然sql2k5及以上版本已经提供了rownum()来进行分页处理,但是使用sql2k进行开发的还是较多的 复制代码 代码如下: uusing system.collections.generic;sing system;using system.text;/// <summary>/// 构造分页后的sql语句/// </summary>public static cla

  • 浅谈Oracle数据库的建模与设计

    正在看的ORACLE教程是:浅谈Oracle数据库的建模与设计.要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统所依据的数据库的建模设计,从逻辑的到物理的,一个环节疏于设计,整个的应用系统便似建立在危房之上,随着开发过程的不断深入,它要随时面临着各种难 以预料的风险,开发者要为修改或重新设计没有设计好的数据库系统而付出难以预料的代价.所以,一个良好的数据库设计是高效率的系统所必须的. 一.逻辑建模 数据库设计的方法因具体数据库而异,但是建模阶段的相同的,所以可以用一些通用的工具来进行

随机推荐