Visual Studio.Net 2005中用SqlDataSource处理数据库特殊数据类型

简介:

 在Sql Server 2005中有哪些常用的数据类型呢?我想这些常用的数据类型应该是:char、nchar、varchar、nvarchar、text、ntext、int、float、money、bit、datetime、smalldatetime、image、binary、varbinary,还有些是在特定环境下需要的如xml、bigint、numberic、real、smallint、timestamp、tinyint等等其他一些更少用到的数据类型。这么多的数据类型,对开发人员来说最常使用的当然是存储字符串的数据类型了,他们有:char、nchar、varchar、nvarchar、text、ntext,那剩下来的自然就是这次随笔所说的“特殊数据类型”了。

      这些特殊数据类型包括:int、float、money、bit、datetime、smalldatetime、image、binary、varbinary、xml、bigint、numberic、real、smallint、timestamp、tinyint等其他没有列出的数据类型,为什么说这些数据类型是特殊的呢?那主要相对于Visual Studio.Net 2005中的SqlDataSource而言的,在SqlDataSource中默认处理且不需要考虑和编写代码的就是处理存储字符串的数据类型了,然而对于其他类型的则需要您或多或少的编写代码。我想这里面最复杂的莫过于处理二进制的数据了,比如保存到数据库的图片,加密字符串(如:密码)后的二进制等等,这两种数据在数据库中选择的数据类型应该是image和varbinary。下面就着重讲解一下如何保存这两种数据类型。

      1、首先假设数据库中已经存在一张表。其中数据字典如下表所示:

表名:T_GuestInfo(客户信息) 

英文字段名

中文字段名

数据类型

长度

主外键

是否为空

默认值

id

自动编号

int

4

主键

[自动]

guestname

客户名称

varchar

20

 

 

guestpsw

客户密码

varbinary

2000

 

 

gdatetime

注册日期

datetime

8

 

getdate()

photo

客户照片

image

 

 

表1   客户信息表 

      这是一个简单的数据库表,但是已经有了期望有的数据类型。

      2、其次让页面中SqlDataSource能连接到T_GuestInfo所在的数据库。

      3、设置SqlDataSource的InsertQuery为【insert into T_GuestInfo values(@guestname,@guestpsw,@gdatetime,@photo)】。

      4、此时假设页面上有了需要获取这些Sql变量的控件值,并且有一个Button,其属性ID是Btn1的按钮,用来提交数据。Button的Click事件伪代码如下所述:

复制代码
 1      protected   void  Btn1_Click( object  sender, EventArgs e)
 2 ExpandedBlockStart.gif     {
 3            SqlDataSource1.InsertParameters.Add("guestname", tbguestname.Text.Trim());
 4            SqlDataSource1.EnableCaching = false;
 5            int i = SqlDataSource1.Insert();
 6            if(i == 1
 7ExpandedSubBlockStart.gif             {
 8               //提示用户成功操作。
 9           }

10    }
复制代码

 

      此时还有几个参数没有被赋值怎么办?不用着急,在发给数据库前一定都让这些参数有值!接着……

      5、继续添加一个事件是SqlDataSource插入前的Inserting事件,即SqlDataSource1_Inserting。事件伪代码如下:

复制代码
 1      protected   void  SqlDataSource1_Inserting( object  sender, SqlDataSourceCommandEventArgs e)
 2 ExpandedBlockStart.gif     {
 3        byte[] bt1 = guestpswbytes;//guestpswbytes是字符串密码转换为二进制数组后的值,需要您自己从相应控件中转换,这里没有提供此代码。
 4        byte[] bt2 = photobytes;//photobytes同样需要您自己去写代码转换为二进制数组。
 5        System.Data.SqlClient.SqlParameter guestpswdb= new System.Data.SqlClient.SqlParameter("@guestpsw", System.Data.SqlDbType.VarBinary);
 6        guestpswdb.Value = bt1;
 7        e.Command.Parameters.Add(guestpswdb);
 8        System.Data.SqlClient.SqlParameter photodb = new System.Data.SqlClient.SqlParameter("@photo", System.Data.SqlDbType.Image);
 9        photodb.Value = bt2;
10        e.Command.Parameters.Add(photodb);
11        System.Data.SqlClient.SqlParameter gdatetimedb = new System.Data.SqlClient.SqlParameter("@gdatetime", System.Data.SqlDbType.DateTime);
12        gdatetimedb .Value = DateTime.Now;
13        e.Command.Parameters.Add(gdatetimedb);
14    }
复制代码

 

      此时按F5运行程序,插入数据,SqlDataSource就能很好的插入我们期望插入的数据了。当然在SqlDataSource_Inserting事件中您还可以写入各种数据库的数据类型,除了SqlDataSource_Inserting事件外,在SqlDataSource_Updating、SqlDataSource_Selecting和SqlDataSource_Deleting事件中同样如此。

      这样我们就完成了让Visual Studio.Net 2005中SqlDataSource插入、更新、查询和删除数据库特殊数据类型的任务了。


本文转自刚刚博客园博客,原文链接:http://www.cnblogs.com/lijigang/archive/2008/11/29/1343633.html,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 JSON 开发工具
Visual Studio编程效率提升技巧集(提高.NET编程效率)
Visual Studio编程效率提升技巧集(提高.NET编程效率)
Visual Studio编程效率提升技巧集(提高.NET编程效率)
|
5月前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
89 1
|
5月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
|
2月前
|
SQL 开发框架 数据库
".NET开发者的超能力:AgileEAS.NET ORM带你穿越数据库的迷宫,让数据操作变得轻松又神奇!"
【8月更文挑战第16天】AgileEAS.NET是面向.NET平台的企业应用开发框架,核心功能包括数据关系映射(ORM),允许以面向对象方式操作数据库,无需编写复杂SQL。通过继承`AgileEAS.Data.Entity`创建实体类对应数据库表,利用ORM简化数据访问层编码。支持基本的CRUD操作及复杂查询如条件筛选、排序和分页,并可通过导航属性实现多表关联。此外,提供了事务管理功能确保数据一致性。AgileEAS.NET的ORM简化了数据库操作,提升了开发效率和代码可维护性。
46 5
|
3月前
|
存储 运维
使用Visual Studio分析.NET Dump
使用Visual Studio分析.NET Dump
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
59 0
|
1月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
66 6
|
2月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
41 0
|
2月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
133 0
下一篇
无影云桌面