三层结构的数据库中如何在客户端动态建立一个新表,请高人指点,谢谢!
解决方案 »
- Operator not applicable to this operand type 咋办??
- 请教解线性方程组!
- 表里面的列名都是英文的,但是我想在dbgrid里面显示中问的列名,如何使之对应起来?
- Borland传奇现在有卖的吗?在深圳哪儿有?书城吗?华强北好个书城有不?谢谢
- 我问了半天这个问题,可是没有人回答对阿,到底我该怎么办
- 怎么样使DBGrid中的某一列的内容,输入的是全部大写
- 哪位帮我看看这一句代码,只有一句话(Installshield)
- 这两个查询结果为何不一样?
- 为什么在spy++中看不到Button按钮
- GetHostByAddr的学问,输入IP得到计算机名,怎么用?我怎么老是失败?
- 用神龙DVD卡开发过东西的兄弟COME IN.
- 关于多层结构的比较
具体:看你用什么方法:比如是ADO还是用BDE
我通常是用ADO,下面代码自己去看吧:
procedure Tfrm_main.Sb_execsqlClick(Sender: TObject);
var
oneline,SqlHear,ls_temp:string;
ch1:char;
i,li_EXEcount:integer;
Llt_SaveSql:Tlistitem;
begin
//开始效验SQL语句的正确性
sqlhear:='';
oneline:=trim(Memo_WrieteSQL.Lines.Strings[0]);
i:=0;
repeat
i:=i+1;
ch1:=oneline[i];
SqlHear:=SqlHear+ch1;
until ch1=' ' ;
SqlHear:=trim(uppercase(sqlhear));
if (SqlHear='SELECT') or (SqlHear='CREATE') or (SqlHear='DELETE')
or (SqlHear='INSERT') or (SqlHear='UPDATE') then
else
begin
messagedlg('SQL命令不正确'+#13+'[提示]本软件暂时只支持:'+#13+
'SELECT[查询]'+#13+'INSERT[插入]'+#13+
'DELETE[删除]'+#13+'CREATE[建立]'+#13+
'UPDATE[更新]',mtError,[mbOK],0);
exit;
end;
//**********开始连接数据库***************************************************
//if prs_DBtype='ORACLE' then frm_db.ADOQ_ExecuteSQL.Connection:=frm_db.ADOC_ORACLE
//else frm_db.ADOQ_ExecuteSQL.Connection:=frm_db.ADOC_ODBC;
try
with frm_db.ADOC_ExecuteSQL do
begin
Connected:=false;
ConnectionString:=pus_connectparam;
LoginPrompt:=false;
Connected:=true;
end;
except
raise ERangeError.CreateFmt('数据库还没有连接上,无法执行SQL语句...错误代号:%d',[10001]);
end;
//*************开始执行SQL语句******************************************
with frm_db.ADOQ_ExecuteSQL do
begin
Connection:=frm_db.ADOC_ExecuteSQL;
close;
sql.Clear;
sql.Add(UpperCase(Memo_WrieteSQL.Lines.Text));
try
if sqlhear='SELECT'
then begin
open;
DBGrid_ExecuteSQL.Visible:=true;
statusbar_top.Panels[1].Text:='共查询到 '+inttostr(RecordCount)+' 条记录';
end
else begin ExecSQL;
DBGrid_ExecuteSQL.visible:=false;
statusbar_top.Panels[1].Text:='执行'+sqlhear+'命令成功!';
end;
except
raise ERangeError.CreateFmt('非法SQL语句'+#13+
'如果语法正确,可能SQL执行对象不在当前用户:'+Pus_CurconnectUser+'内'+
#13+'[错误代号:%d]',[1763]);
end;
end;
//效验是否有重复执行的SQL语句
if Not Pop_EnabledRepeatHistorySql.Checked then
begin
Li_EXEcount:=LV_SaveSql.Items.Count;
for i:=0 to Li_EXEcount-1 do
begin
Llt_SaveSql:=LV_SaveSql.Items[i];
oneline:=UpperCase(trim(Memo_WrieteSQL.Lines.Text));
ls_temp:=Llt_SaveSql.SubItems.Strings[1];
if oneline=ls_temp then exit;
end;
next;
end;
//*******开始写SQL执行的历史记录****************************
ls_temp:=datetimetostr(now());
Llt_SaveSql:=LV_SaveSql.Items.Add;
Llt_SaveSql.Caption:=ls_temp;
Llt_SaveSql.SubItems.Add(Pus_CurconnectUser);
Llt_SaveSql.SubItems.add(UpperCase(trim(Memo_WrieteSQL.Lines.Text)));
Llt_SaveSql.SubItems.add(Prs_DBtype);
if prs_DBtype='ORACLE' then
Llt_SaveSql.SubItems.add('Microsoft OLE DB Provider for ORACLE')
else Llt_SaveSql.SubItems.add('Microsoft OLE DB Provider for ODBC Drivers');
Llt_SaveSql.SubItems.add(pus_connectparam);
Llt_SaveSql.SubItems.Add(sqlhear);
end;
(id int is null,name varchar(10) null)