不会吧!我的是english,支持繁体文,我测试就是ok!create table #T(des nvarchar(30))
insert into #T
select N'中国' union all
select N'韩国' union all
select N'马来西亚' declare @des as nvarchar(30)
set @des = N'澳大利亚'
update #T
set des = @des
where des = N'马来西亚'select * from #T
/*
des
------------------------------
中国
韩国
澳大利亚(3 row(s) affected)
*/--一切ok!你肯定是前台传入就是乱码,否则怎么会呢?要用utf-8传入啊
insert into #T
select N'中国' union all
select N'韩国' union all
select N'马来西亚' declare @des as nvarchar(30)
set @des = N'澳大利亚'
update #T
set des = @des
where des = N'马来西亚'select * from #T
/*
des
------------------------------
中国
韩国
澳大利亚(3 row(s) affected)
*/--一切ok!你肯定是前台传入就是乱码,否则怎么会呢?要用utf-8传入啊
cstmt = connection.prepareCall("{ call update(?) }");
cstmt.setObject(1,"汉字");
cstmt.executeUpdate();CREATE PROCEDURE update
@chinese nvarchar(50)
ASUPDATE language
Set chinese= @chinese
WHERE num = 1
GO问题:我发现这样无法支持汉字,更新到数据库中全是乱码2:另外取数据的时候用的getObject把他们放在list中ResultSet rs = stmt.executeQuery("select chinese from language WHERE num = 1");
List list = new ArrayList();
while(rs.next()){
int i = rs.getMetaData().getColumnCount();
Object object[] = new Object[i];
for(int j=0;j<i;j++){
object[j] = rs.getObject(j+1);
}
list.add(object);
}问题:我发现当字段设为nvarchar时候用getObject根本取不到字符串的数据,但只有nvarchar支持中文,并且这两个方法是公用的,存取数据时候必须要写两个公用方法,这个方法该怎么改呢?大侠们帮忙看看吧,我要实现这两个功能该用什么方法呢?
我用SQL Server 2000建立了一个表 TempTable字段为
AuthorID char(10)
AuthorName varchar(20)
然后建立了一个存储过程Search_OnAuthor如下:
CREATE PROCEDURE dbo.Search_OnAuthor
@sAuthorName varChar(20),
@sTempABC varChar(20) Output
AS
set @sTempABC = @sAuthorName
select * from TempTable
where Author like '%'+@sTempABC+'%'然后做了一个Midas结构的系统
数据库服务器利用TADOStoredProc来连接这个存储过程Search_OnAuthor用TDataSetProvider提供接口客户端利用TClientDataSet获得接口
下面是调用Search_OnAuthor存储过程的方法:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientDataSet1->Close();
ClientDataSet1->Params->Clear();
ClientDataSet1->Params->CreateParam(ftString, "sAuthorName", ptInput);
ClientDataSet1->Params->CreateParam(ftString, "sTempABC", ptOutput);
ClientDataSet1->Params->ParamByName("sAuthorName")->AsString = AuthorNameEdit->Text;
ClientDataSet1->Params->ParamByName("sTempABC")->AsString = TempEdit->Text;
ClientDataSet1->Active = TRUE; Edit3->Text = ClientDataSet1->Params->ParamByName("sTempABC")->AsString;
}
//---------------------------------------------------------------------------发现运行结果不正确:
1.若AuthorNameEdit->Text没有非中文汉字时,Edit3->Text显示的与AuthorNameEdit->Text相同
2.若AuthorNameEdit->Text为中文汉字,Edit3->Text只显示AuthorNameEdit->Text汉字个数的一半规律如下:
AuthorNameEdit->Text汉字个数 Edit3->Text显示的汉字个数
1 0
2 1
3 1
4 2
5 2
6 3
7 3
请问这是为什么?
系统:Windows 2000 Server中文,SQL Server 2000 SP4, C++Builder 6.0