将string插入sql srver表中text类型字段,太长时无法插入,怎么办?
现在想把一个很长的string插入到sql server数据表中的text类型字段,但当string非常大时无法插入,请问有什么解决办法,谢谢! --------------------编程问答-------------------- 不会吧,text型都放不下?你的string有多大呀。--------------------编程问答-------------------- 按住,狠插~ --------------------编程问答-------------------- text也放不下,那你就不要放了 --------------------编程问答-------------------- 不要使用拼串的Sql,而是使用数据库命令对象如SqlCommand,为其添加Text类型的参数就可以了,比如SqlParameter。 --------------------编程问答-------------------- 请问hbxtlhx能帮我举个例子么?不太明白你的意思,谢谢:) --------------------编程问答-------------------- SqlParameter[] parms = {
new SqlParameter("@BeginDate", SqlDbType.DateTime),
new SqlParameter("@EndDate", SqlDbType.DateTime),
new SqlParameter("@Grp_Name",SqlDbType.Text)};
parms[0].Value = begin_Date;
parms[1].Value = end_Date;
parms[2].Value = GrpName; --------------------编程问答-------------------- 可能是你的sql 语句过长,而不是你的text字段过长 --------------------编程问答-------------------- Text是文本文件方式存储,会自己增加大小,不可能放不下string
--------------------编程问答-------------------- SQL语句过长 --------------------编程问答-------------------- 各位,我按照大家的方法是这样写的存储过程
CREATE Procedure InsertDetails
@province varchar(10),
@datestr varchar(8),
@should int,
@intime int,
@intimeratio varchar(10),
@late int,
@lateratio varchar(10),
@without int,
@withoutratio varchar(10),
@latedetails text,
@withoutdetails text,
@archive char(1)
as
exec('Insert into STAT_REGION_AWS_ST values('''+@province+''','''+@datestr+''','''+@should+''','''+@intime+''','''+@intimeratio+''','''+@late+''','''+@lateratio+''','''+@without+''','''+@withoutratio+''','''+@latedetails+''','''+@withoutdetails+''','''+@archive+''')')
GO
然后在程序中添加参数如下
com = new SqlCommand("InsertDetails", conn);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add("@province", SqlDbType.Char,10);
com.Parameters["@province"].Value = InsertArray[0];
com.Parameters.Add("@datestr", SqlDbType.Char,8);
com.Parameters["@datestr"].Value = InsertArray[1];
com.Parameters.Add("@should",SqlDbType.Int);
com.Parameters["@should"].Value = InsertArray[2];
com.Parameters.Add("@intime", SqlDbType.Int);
com.Parameters["@intime"].Value = InsertArray[3];
com.Parameters.Add("@intimeratio", SqlDbType.Char,10);
com.Parameters["@intimeratio"].Value = InsertArray[4];
com.Parameters.Add("@late", SqlDbType.Int);
com.Parameters["@late"].Value = InsertArray[5];
com.Parameters.Add("@lateratio", SqlDbType.Char, 10);
com.Parameters["@lateratio"].Value = InsertArray[6];
com.Parameters.Add("@without", SqlDbType.Int);
com.Parameters["@without"].Value = InsertArray[7];
com.Parameters.Add("@withoutratio", SqlDbType.Char, 10);
com.Parameters["@withoutratio"].Value = InsertArray[8];
com.Parameters.Add("@latedetails", SqlDbType.Text);
com.Parameters["@latedetails"].Value = InsertArray[9];
com.Parameters.Add("@withoutdetails", SqlDbType.Text);
com.Parameters["@withoutdetails"].Value = InsertArray[10];
com.Parameters.Add("@archive", SqlDbType.Char,1);
com.Parameters["@archive"].Value = InsertArray[11];
com.ExecuteNonQuery();
可是当@latedetails和@withoutdetails达到上千个字符的时候,就插入不了了,这到底是什么原因呢? --------------------编程问答-------------------- sql接受最长的单次脚本长度是有限制的,是sqlserver本身的限制,我以前测试过,大概是36K字符的长度(sqlserver2000).
补充:.NET技术 , C#