有关SQLServer中varchar和nvarchar的区别可以直接去google。一般在中文系统中应该使用nvarchar作为字符串的对应类型,但是Hibernate中的默认实现SQLServerDialect使用了varchar。以下方法可以简单地转为使用nvarchar:
创新互联公司是一家专注于做网站、成都网站设计与策划设计,丰镇网站建设哪家好?创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:丰镇等地区。丰镇做网站价格咨询:18980820575
自己写一个dialect,继承SQLServerDialect,在构造器中将原先varchar类型的注册声明覆盖:
registerColumnType(Types.VARCHAR, "nvarchar($l)");
千万注意,“$”后面的是字段长度的占位符,是“l(ength)”,而不是数字“1”(因为看hibernate的doc时没分清“l”和“1”,浪费了我一上午去找原因)
然后在hibernate的配置文件中将hibernate.dialect的值设为你的dialect实现类就OK了
原因有二:
1.
数据库引擎没有启动。
有两种启动方式:
(1)开始-程序-Microsoft
SQL
Server
2005-SQL
Server
2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database
Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动;
(2)可打开:开始-程序-Microsoft
SQL
Server
2005-配置工具-SQL
Server
Configuration
Manager,选中SQL
Server
2005服务中SQL
Server(MSSQLSERVER)
,并单击工具栏中的"启动服务"按钮把服务状态改为启动;
使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL
Server
2005配置管理器"中的SQL
Server
2005网络配置-MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.
2.
是否已经允许远程连接。
这个部分可以简单的分为4个方面,分别是在
SQL
Server上启用远程连接、启用SQL
Server
浏览服务、在Windows
防火墙中为SQL
Server
2005
创建例外和在Windows
防火墙中为“SQLBrowser”创建例外。下面是几个具体的操作方式:
在SQLServer
实例上启用远程连接
1.指向“开始-程序-Microsoft
SQL
Server
2005-配置工具-SQL
Server
外围应用配置器”
2.在“SQL
Server
2005
外围应用配置器”页,
单击“服务和连接的外围应用配置器”
3.然后单击展开“数据库引擎”,
选中“远程连接”,在右边选中“本地连接和远程连接”,
再选择要使用的协议,(
这个地方应当启用TCP/IP
和命名管道服务!)单击“应用”,您会看到下消息:
“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
4.展开“数据库引擎”,
选中“服务”,在右边单击“停止”,等到
MSSQLSERVER
服务停止,
然后单击“启动”,重新启动MSSQLSERVER
服务。
启用
SQLServer
浏览器服务
1.指向“开始-程序-Microsoft
SQL
Server
2005-配置工具-SQL
Server
外围应用配置器”
2.在“SQL
Server
2005
外围应用配置器”页,
单击“服务和连接的外围应用配置器”
3.然后单击展开“SQL
Server
Browser”,
选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回
在Windows
防火墙中为“SQL
Server
2005”创建例外
1.在
Windows
防火墙设置界面中,选择“
例外”
选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft
Files\Microsoft
SQL
Server\
MSSQL.1
\MSSQL\Binn\sqlservr.exe”,
单击“确定”返回
注意
:
路径可能会根据
SQL
Server
2005
安装不同而不同。
MSSQL.1
是占位符,对应数据库实例ID。
4.对每个需要打开远程访问的SQL
Server
2005
实例,重复步骤
1
至
3。
在Windows
防火墙中为“SQLBrowser”创建例外
1.在
Windows
防火墙设置界面中,选择“
例外”
选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft
Files\Microsoft
SQL
Server\90\Shared\sqlbrowser.exe”,
单击“确定”返回
注意
:
路径可能会根据
SQL
Server
2005
安装不同而不同
具体原因分析省略,参考解决方案如下:
1、开始菜单--Microsoft
SQL
Server
2005--配置工具--SQL
Server
Configuration
Manager--SQL
Server
2005网络配置--SQLEXPRESS协议(除了VIA为“已禁用”,其他三项都应为“已启用”。可双击设置)
然后紧接着下面的SQL
Native
Client配置--客户端协议(也是保证三个启用一个禁用,同上)
2、开始菜单--Microsoft
SQL
Server
2005--配置工具--SQL
Server外围应用配置器--服务和连接的外围应用配置器--SQLEXPRESS--Database
Engine--“服务”要确保运行正常,“远程连接”--选中“远程连接和本地连接”,选中“同时使用TCP/IP和name
pipes(B)”.
试试看,仅供参考!
Rock.
补充(以下是来自网上的一些建议,我筛选了几点值得考虑的):
1、在“服务和连接的外围应用配置器”里单击展开“SQL
Server
Browser”,
选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回
2、在Windows
防火墙中为“SQL
Server
2005”创建例外
1)在
Windows
防火墙设置界面中,选择“
例外”
选项卡,然后单击“添加程序”
2)在“添加程序窗口”中单击“浏览”
3)然后找到“C:\ProgramFiles\Microsoft
Files\Microsoft
SQL
Server\
MSSQL.1
\MSSQL\Binn\sqlservr.exe”,
单击“确定”返回
注意
:
路径可能会根据
SQL
Server
2005
安装不同而不同。
MSSQL.1
是占位符,对应数据库实例ID。
4)对每个需要打开远程访问的SQL
Server
2005
实例,重复步骤
(1)至
(3)。
3、在Windows
防火墙中为“SQLBrowser”创建例外
1)在
Windows
防火墙设置界面中,选择“
例外”
选项卡,然后单击“添加程序”
2)在“添加程序窗口”中单击“浏览”
3)然后找到“C:\ProgramFiles\Microsoft
Files\Microsoft
SQL
Server\90\Shared\sqlbrowser.exe”,
单击“确定”返回
注意
:
路径可能会根据
SQL
Server
2005
安装不同而不同。
以上所有,包括补充之前的那些,一定记得重启SQL服务、确保服务正常开启。
string
ins="insert
into
表
values(:字段1,:字段2,:字段3,:字段4........)";
sqlserver和oracle所用占位符不一样的
:是Oracle的binding
variable的语法,在写SQL和PL/SQL的时候经常使用,但不代表不使用:就不用绑定变量或使用:就一定是绑定变量
两个可能
数据库引擎没有启动。
开始-控制面板-管理工具-服务,找到SQL Server(MSSQLSERVER)服务,开启它。
是否已经允许远程连接。这个部分可以简单的分为4个方面,分别是在 SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL
Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。
下面是4个具体步骤:
---在SQLServer 实例上启用远程连接
1.指向“开始-程序-Microsoft SQL Server
2005-配置工具-SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页,
单击“服务和连接的外围应用配置器”
3.然后单击展开“数据库引擎”, 选中“远程连接”,在右边选中“本地连接和远程连接”,
再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:
“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回
4.展开“数据库引擎”,
选中“服务”,在右边单击“停止”,等到 MSSQLSERVER 服务停止,
然后单击“启动”,重新启动MSSQLSERVER 服务。
---启用 SQLServer 浏览器服务
1.指向“开始-程序-Microsoft SQL Server
2005-配置工具-SQL Server 外围应用配置器”
2.在“SQL Server 2005 外围应用配置器”页,
单击“服务和连接的外围应用配置器”
3.然后单击展开“SQL Server Browser”, 选中“服务”,在右边“启动类型”选择“自动”,
再单击“启动”,单击“确定”按钮返回
---在Windows 防火墙中为“SQL Server 2005”创建例外
1.在
Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1
\MSSQL\Binn\sqlservr.exe”,
单击“确定”返回
注意 : 路径可能会根据 SQL Server 2005
安装不同而不同。 MSSQL.1 是占位符,对应数据库实例ID。
4.对每个需要打开远程访问的SQL Server 2005 实例,重复步骤 1 至
3。
---在Windows 防火墙中为“SQLBrowser”创建例外
1.在 Windows 防火墙设置界面中,选择“ 例外”
选项卡,然后单击“添加程序”
2.在“添加程序窗口”中单击“浏览”
3.然后找到“C:\ProgramFiles\Microsoft
Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”,
单击“确定”返回
注意 :
路径可能会根据 SQL Server 2005 安装不同而不同。
在使用.NET开发进行时,会遇到使用连接字符串连接SQL
Server 2005数据库使用机器名称和localhost都能连接,但是使用IP地址却不能连接的问题,解决的办法是在SQL
Server实例上启用本地和远程连接,并且在选择协议的时候使用TCP/IP和命名管道服务即可解决。
我查了下这里还有个同问题的解决办法这里看》