C#对SQL2000TEXT字段存储的实现(使用存储过程)

在.net制作web项目的过程中难免会涉及到大量文本的存储问题,一般都是将大量文本保存为一个文件,然后在数据库中引用其路径信息。如果将这些大量的文本信息直接存入数据库的话,就要用到text字段,但是在SQL2000中text字段直接存的话顶多只能存8000个字符,超出8000个字符将无法存入数据库,导致出错。其实,这是SQL2000自身的保护,为了将字符数量超过8000的大文本存入数据库,可以使用存储过程的方法实现。利用存储过程可以提高web数据库的访问效率。
1.这里先准备数据库:在SQL2000的pubs数据库中建立一个News数据表,字段为id,title,content
2.建立用于插入news的存储过程:NewsInsert和NewsUpdate,代码如下:

CREATE PROCEDURE NewsInsert   @title char(200),@content text   AS
Insert Into News (title,content) Values (@title,'')
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(content) 
FROM News 
WHERE id = @@identity
writeTEXT News .content @ptrval  @content
GO
CREATE PROCEDURE NewsUpdate   @title char(200),@content text,@id int   AS

Update News Set title = @title,content='' Where id = @id 

DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(content) 
FROM News 
WHERE id = @id
writeTEXT News .content @ptrval  @content
GO
3.保存text的C#代码:
private void Button2_Click(object sender, System.EventArgs e)
        
{
            
string str;
            str
=this.T1.Text;            
            SqlConnection myCon
=new SqlConnection("server=127.0.0.1;database=pubs;uid=sa;pwd=;");//myCon是数据库连接对象            
            myCon.Open();//打开数据库连接
            
//以下为C#调用存储过程的代码
            SqlCommand myCom=new SqlCommand("NewsInsert",myCon);//myCom是执行数据库操作的命令对象
            myCom.CommandType=CommandType.StoredProcedure;//说明命令对象执行的是数据库存储过程            
            myCom.Parameters.Add("@title",SqlDbType.VarChar);//添加存储过程参数,名称和类型
            myCom.Parameters["@title"].Value="Ann";//给添加的参数赋值
            myCom.Parameters.Add("@content",SqlDbType.Text);
            myCom.Parameters[
"@content"].Value=str;
            myCom.ExecuteNonQuery();        
            myCon.Close();
//关闭连接
        }
4.更新text字段的C#代码:
private void Button4_Click(object sender, System.EventArgs e)
        
{
            SqlConnection myCon
=new SqlConnection("server=127.0.0.1;database=pubs;uid=sa;pwd=;");//myCon是数据库连接对象            
            myCon.Open();//打开数据库连接
            
//以下为C#调用存储过程的代码
            SqlCommand myCom=new SqlCommand("NewsUpdate",myCon);//myCom是执行数据库操作的命令对象
            myCom.CommandType=CommandType.StoredProcedure;//说明命令对象执行的是数据库存储过程            
            myCom.Parameters.Add("@title",SqlDbType.VarChar);//添加存储过程参数,名称和类型
            myCom.Parameters["@title"].Value="Ann";//给添加的参数赋值
            myCom.Parameters.Add("@content",SqlDbType.Text);
            myCom.Parameters[
"@content"].Value=this.T2.Text;
            myCom.Parameters.Add(
"@id",SqlDbType.VarChar);//添加存储过程参数,名称和类型
            myCom.Parameters["@id"].Value=Convert.ToInt32(this.tId.Text);//给添加的参数赋值        
            myCom.ExecuteNonQuery();
            myCon.Close();
//关闭连接
        }
5.显示text字段的方法很简单和varchar字段一样处理就可以了!需要注意的一点是,要在大文本字段所在的aspx页的html代码中的page标签属性中添加<%@ page requestValidate="false"%>
posted on 2007-01-15 18:18  虞山居士  阅读(460)  评论(0)    收藏  举报