js已连接上sqlserver,怎么取表里的字段值存为数组
站在用户的角度思考问题,与客户深入沟通,找到高碑店网站设计与高碑店网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖高碑店地区。
Release 版本 参数含义
/MD /ML 或 /MT 使用发布版本的运行时刻函数库
/O1 或 /O2 优化开关,使程序最小或最快
/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)
/GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改
Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。
1. 变量。
大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值近
存储过程里定义不了数组。如果是sqlserver,那么你可以用表变量,游标来实现你的功能。
如果是sqlserver2005以上的版本,可以做clr存储过程,那里面是可以用数组的。
仔细研究后在csdn上找到了解决该问题的办法帖出来给大家共享一下
大致方法是利用传递长字符串的形式向存储过程传递一个长字符串。由于sqlserver没有 splite函数
所以必须自己定义一个splite函数来进行处理
自定义一个函数
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(F1 varchar(100))asbegindeclare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)while @i=1begininsert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)endif @SourceSql''
insert @temp values(@SourceSql)returnend-执行select * from dbo.f_splitstr('1,2,3,4',',')
注:'1,2,3,4'即你所传递的字符串
同样你可以通过 select cunt(*) from dbo.f_splitstr('1,2,3,4',',')
获得该字符串数组的长度
如果要删除该函数使用--删除函数drop function fsplit
Create Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10))
returns @temp Table (a varchar(100))
As
Begin
Declare @i Int
Set @Sql = RTrim(LTrim(@Sql))
Set @i = CharIndex(@Splits,@Sql)
While @i = 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i = CharIndex(@Splits,@Sql)
End
If @Sql ''
Insert @temp Values (@Sql)
Return
End
确切的说不行-SQL SERVER没有数组类型,ANSI SQL 92标准也不支持数组。但可用其它的方法来实现。 1. You could simulate an array by passing one or more varchar(255) fields with comma-separated values and then use a WHILE loop with PATINDEX and SUBSTR to extract the values. 1、你可以使用几个VARCHAR(255)字段来模拟数组,字段中用逗号分开各个数据,然后使用循环和PATINDEX和SUBSTR分开这些数据。 2. The more usual way to do this would be to populate a temporary table with the values you need and then use the contents of that table from within the stored-procedure. Example of this below2、通常这种方法需要为这些数据创建一个临时表,然后在存储过程使用表中的内容。如下例create procedure mytest @MyParmTempTable varchar(30)asbegin-- @MyParmTempTable contains my parameter list... 这个变量是包含参数的表名-- For simplicity use dynamic sql to copy into a normal temp table... create table #MyInternalList ( list_item varchar( 2 ) not null)set nocount oninsert #MyInternalList select * from sysobjects create table #MyList ( list_item varchar( 2 ) not null)insert #MyList values ( 'S' ) insert #MyList values ( 'U' ) insert #MyList values ( 'P' )exec mytest "#MyList"3. If all you wanted to do was use the array/list as input to an IN clause in a WHERE statement you could use :-3、如果你想在IN子句里使用输入的数组参数可以这样做:CREATE PROCEDURE sp_MyProcedure (@MyCommaDelimitedString
首先你要回导驱动包
会配置数据库的TCP/IP的端口
会写连接数据库的代码
这里有连接数据库的代码
public class BaseDao {
static{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//加载数据库驱动
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取数据库连接的方法
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=JobDB","sa","accp");
}
//关闭结果集什么的
public static void close(ResultSet rs,Statement st,Connection conn){
try {
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后这里有一个方法时调用数据库连接的,操作数据库的,返回的是一个Companyinfo对象
public Companyinfo getUser(int i) throws SQLException{
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
Companyinfo user=null;
try{
conn=getConnection();//获取数据库连接
String sql="select comId,comname,comtype,comaddress,comtackinfo from TBL_COMPANYINFO where comId=?";//创建SQL语句
ps=conn.prepareStatement(sql);//获取PreparedStatement
ps.setLong(1, i);//设置?号得值,?号代表占位符
rs=ps.executeQuery();//执行SQL语句,返回结果集
if(rs.next())//如果读取到,就给对象进行赋值
{user=new Companyinfo(rs.getInt("comId"),rs.getString("comname"),rs.getString("comtype"),rs.getString("comaddress"),rs.getString("comtackinfo"));
}
}finally{
close(rs, ps, conn);//关闭获取的结果集什么的
}
return user;//返回对象
}