刚接触ADO.NET,两个小为题

chaoren119119 2008-12-17 10:50:23
第一,如何正确返回select查询的记录数,相当于ADO中的RecordCount值
第二,我有个字段是image类型,如何用insert新增记录,该变量未byte数组
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
marongc 2008-12-18
  • 打赏
  • 举报
回复
第一个问题

Dim myds As New DataSet '定义数据集
If myCon.State = ConnectionState.Closed Then myCon.Open()
myCmd.CommandText = SqlString
myCmd.Connection = myCon
myCmd.ExecuteNonQuery()
myds.Clear()

MyDa.SelectCommand = myCmd '执行命令给数据适匹器
MyDa.Fill(myds) '填充数据集

Dim c As Integer
c = myds.Tables(0).Rows.Count


第二个问题

'保存图片
Dim ms As New MemoryStream
Me.PictureBox1.Image.Save(ms, Me.PictureBox1.Image.RawFormat)

Dim arrayImage() As Byte = ms.GetBuffer
ms.Close()

If myCon.State = ConnectionState.Closed Then myCon.Open()
txtSQL = "UPDATE JSSty SET Images = @IMAGES WHERE (CODE = N'" & Me.LabCode.Text.Trim & "')"
myCmd.CommandText = txtSQL
myCmd.Connection = myCon
myCmd.Parameters.Clear()
myCmd.Parameters.Add(New SqlParameter("@IMAGES", SqlDbType.Image)).Value = arrayImage
myCmd.ExecuteNonQuery()
myCon.Close()
chaoren119119 2008-12-17
  • 打赏
  • 举报
回复
就是不想用select count() 来获取
直接用select * from 可以获取到类似于recordcount值不,
如果实在不行的话,我还是用ADODB算了,不用ADO.NET了
周公 2008-12-17
  • 打赏
  • 举报
回复
Command对象
Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。
Command主要有三个方法:
ExecuteNonQuery () :执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。
ExecuteReader ():执行一个查询的SQL语句,返回一个DataReader对象。
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。

有关ExecuteNonQuery ()和ExecuteReader ()的用法在稍后马上提到,这里我主要演示ExecuteScalar ()这个方法的用法。
请看下面的例子:

protected void Page_Load(object sender, EventArgs e)
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select count(1) as 男性人数 from UserInfo where sex=1", connection);
//打开Connection对象
connection.Open();
//执行SQL语句
int count = int.Parse(command.ExecuteScalar().ToString()); //用于获取表中符合条件的记录总数
//关闭Connection对象
connection.Close();
Response.Write("在UserInfo表里共有" + count + "个男性。");
}
周公 2008-12-17
  • 打赏
  • 举报
回复
asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
本篇中还讲述了自定义分页在数据库层的理论。


在ADO.NET中使用参数化SQL语句的大同小异
在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Oracle中Clob字段等)使用参数化SQL语句很容易就能赋值,所以本人经常在ADO.NET中使用参数化SQL语句,近几年来陆续跟SQL Server/Oracle/ MySQL/Access打交道,积累了一些心得,现在整理出来供大家参考。
周公 2008-12-17
  • 打赏
  • 举报
回复
获取记录的数量,如果数据量不大的情况下可以用DataTable.Rows.Count;
还可以利用Command.ExecuteScalar()方法来做。

插入Image类型的内容要用参数化SQL语句。
chaoren119119 2008-12-17
  • 打赏
  • 举报
回复
to wuyq11
有没有关于dataset的例子啊
还有就是,第二,能不能直接用insert 去插入一个二进制数组变量?
wuyq11 2008-12-17
  • 打赏
  • 举报
回复
ds.Table[0].RowsCount
image to byte[]

MemoryStream ms=new MemoryStream();
byte[] imagedata=null;
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif );
imagedata=ms.GetBuffer ();

byte[] to image

ms = New IO.MemoryStream(by)
img = Drawing.Image.FromStream(ms)
参考
http://www.cnblogs.com/virusswb/archive/2008/05/22/1205030.html
zhl1983929 2008-12-17
  • 打赏
  • 举报
回复
up

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧