INSERT INTO student VALUES(null, 'name1', 'gender1', '2002-06-06');
INSERT INTO studentdetails VALUES(last_insert_id(), 'address1','postcode1','hometel1','email','parentname1',null,null,null);
INSERT INTO studentdetails VALUES(last_insert_id(), 'address1','postcode1','hometel1','email','parentname1',null,null,null);
然后再运行它
它取出的就是你上一条INSERT语句插入的自增值,
它并不会因别的用户插入新的记录而改变的,
---------------------------------
mysql_query("lock tables student write");
//insert into student ............
//select Last_insert_id();or select max(id) from student;
//insert into studentdetail ..............
mysql_query("unlock tables");
----------------------------------
记住,所有的mysql_query()都要加上判断,如果你要终止,一定要为数据库解锁
“它取出的就是你上一条INSERT语句插入的自增值,它并不会因别的用户插入新的记录而改变的,”
如果我写一个多线程的程序,不断向student表插入数据,然后再 SELECT Last_Insert_Id(); ,再向studentdetail表插入数据,能保证id的正确性吗?yu_dx():
“所有的mysql_query()都要加上判断”能说说怎么判断吗?“为数据库解锁”是不是运行 mysql_query("unlock tables"); 就得了?我是初学者,不好意思。
只要你在
INSERT INTO student VALUES(null, 'name1', 'gender1', '2002-06-06');
后没有再向student插入新的信息,而是直接运行INSERT INTO studentdetails VALUES(last_insert_id(), 'address1','postcode1','hometel1','email','parentname1',null,null,null);
URL: http://www.inprises.com/control/TMySQL.Components.v2001.1.0.0.For.Delphi.And.Kylix.Incl.Full.Source-DiSTiNCT.rar
====================================================================
{本程序已实现了图像从mysql数据库存入和读出
作者:刘志强
image表:
code char 10
image longblob (*如换成blob则存储很慢)
}
unit Unit119;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, MySQLDataset, Grids, DBGrids, MySQLServer, StdCtrls, DBCtrls;type
TForm1 = class(TForm)
MySQLServer1: TMySQLServer;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
MySQLQuery1: TMySQLQuery;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: PChar;
fd: Integer;
Stream: TMySQLBlobStream;
bmp:TBitmap;
flen:Int64;
begin
bmp:=TBitmap.Create;
try
//向Mysql表写入Bmp图像
bmp.LoadFromFile('c:\program files\common files\borland shared\Images\Splash\256color\factory.bmp');
MySQLQuery1.Open;
MySQLQuery1.Append;
MySQLQuery1.FieldByName('code').AsString:='刘志12';
MySQLQuery1.FieldbyName('image').Assign(bmp);
MySQLQuery1.TableName:='image';
MySQLQuery1.post;
//从Mysql表读出Bmp图像
MySQLQuery1.close;
MySQLQuery1.SQl.Clear;
MySQLQuery1.SQL.Add('select * from image where code="刘志12"');
MySQLQuery1.Open;MySQLQuery1.Next;
MySQLQuery1.Edit;
Stream := TMySQLBlobStream.Create(MySQLQuery1.FieldByName('Image') as TBlobField, bmReadWrite);
bmp.LoadFromStream(stream);
canvas.Draw(0,0,bmp);
finally
Stream.Free;
bmp.Free;
end;
end;
end.