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
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();//关闭连接
}
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();//关闭连接
}

浙公网安备 33010602011771号