以下是建表已经存储过程:
create database testuse testcreate table login
(
id int IDENTITY (1, 1) NOT NULL,
usename varchar(50),
usepwd varchar(50)
)create proc inser_login
@usename varchar(50),
@usepwd varchar(50)
as
insert into login(usename,usepwd)values(@usename,@usepwd)
在DELPHI中 客户端 我用的ClientDataSet1+SocketConnection1控件
在BUTTON1中写的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
self.ClientDataSet1.close;
self.ClientDataSet1.Params.ParamByName('@usename').Value:=edit1.Text;
self.ClientDataSet1.Params.ParamByName('@usepwd').Value:=edit2.Text;
self.ClientDataSet1.Execute;
end;
运行后 在 edit1和edit2中输入 英文就能正确存入数据库!
       而在 edit1和edit2中输入 中文后他就只能存部分数据到数据库,例如我输入“效益” 他存到数据库的既然只有“效”一个字!希望各位能帮我看看是问题出在哪里?

解决方案 »

  1.   

    ClientDataSet1 属性有问题 删掉 重新建一个
      

  2.   

    自身有些BUG,删掉重新添加一人有时就行了。
      

  3.   

    ClientDataSet2.Close;
    ClientDataSet2.FieldByName('@usename').AsString:=trim(Edit3.Text);
    ClientDataSet2.FieldByName('@usepwd').AsString:=trim(Edit4.Text);
    ClientDataSet2.Execute;
    这样写就可以了 哈哈
    或者
    ClientDataSet2.Close;
    ClientDataSet2.Open;
    ClientDataSet2.Insert;
    ClientDataSet2.FieldByName('usename').AsString:=trim(Edit3.Text);
    ClientDataSet2.FieldByName('usepwd').AsString:=trim(Edit4.Text);
    ClientDataSet2.Post;
    ClientDataSet2.ApplyUpdates(-1);
    这样写 效果都一样哦
    只不过一个是用存储过程 还有一个是用的 ADOQUERY