線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1738
推到 Plurk!
推到 Facebook!

欄位 null 與 not null 的問題~不太會表達,詳情請看內容~~

尚未結案
SianJhihCiou
一般會員


發表:3
回覆:4
積分:1
註冊:2007-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-19 12:13:20 IP:211.78.xxx.xxx 訂閱
有個問題請教各位前輩~~
Create Table Test
(
F1 char(10) not null,
F2 char(10) null
)
此語法下完後,在新增資料的時候 => F1一定要給值, F2不一定要給值
例: Insert into Test(F1) Values ('x001') => F2不給值
Insert into Test(F1, F2) values ('x001', 'y001') => F2給值
那如何在程式中得知各欄位的原設定為何(null 或 not null)呢??
P.S.目前使用ADOQuery或ClientDataSet元件。
------
SianJhihCiou
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-07-19 15:44:07 IP:203.75.xxx.xxx 未訂閱
以mysql為例
SHOW COLUMNS FROM data;

所以大概會像是:
[code delphi]
ClientDataSet1.FieldByName('COLUMNS').AsString = 'OOXX'
[/code]
其它請接力
===================引 用 SianJhihCiou 文 章===================
有個問題請教各位前輩~~
Create Table Test
(
F1 char(10) not null,
F2 char(10) null
)
此語法下完後,在新增資料的時候 => F1一定要給值, F2不一定要給值
例: Insert into Test(F1) Values ('x001')=>F2不給值
Insert into Test(F1, F2) values ('x001', 'y001')=>F2給值
那如何在程式中得知各欄位的原設定為何(null 或 not null)呢??
P.S.目前使用ADOQuery或ClientDataSet元件。
編輯記錄
GrandRURU 重新編輯於 2010-07-19 15:56:53, 註解 無‧
GrandRURU 重新編輯於 2010-07-19 15:57:49, 註解 無‧
老大仔
尊榮會員


發表:77
回覆:835
積分:1082
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-07-19 16:20:30 IP:59.120.xxx.xxx 未訂閱
一開始看不太懂您要問的問題
您是要問~
1. 要怎麼知道該欄位的設定是否為Null??
還是
2. 要怎麼知道該欄位的是否為Null??

假如是2, 那麼GrandRURU大大已經回答了
但是照您的問題看來
應該是指1
假如是1, 該欄位在設定(Create Table)的時候您就已經給它設為不能null(or 可以為Null)了,
所以填值進去時,您自己就應該要知道哪些欄位不能為Null了,不是嗎??
(雖然還是有語法可以知道某欄位是否允許Null)

===================引 用 GrandRURU 文 章===================
以mysql為例
SHOW COLUMNS FROM data;

所以大概會像是:
[code delphi]
ClientDataSet1.FieldByName('COLUMNS').AsString = 'OOXX'
[/code]
其它請接力
===================引 用 SianJhihCiou 文 章===================

有個問題請教各位前輩~~
Create Table Test
(
F1 char(10) not null,
F2 char(10) null
)
此語法下完後,在新增資料的時候 => F1一定要給值, F2不一定要給值
例: Insert into Test(F1) Values ('x001')=>F2不給值
Insert into Test(F1, F2) values ('x001', 'y001')=>F2給值
那如何在程式中得知各欄位的原設定為何(null 或 not null)呢??
P.S.目前使用ADOQuery或ClientDataSet元件。
編輯記錄
老大仔 重新編輯於 2010-07-19 16:21:32, 註解 無‧
GrandRURU
站務副站長


發表:235
回覆:1655
積分:1753
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-07-19 16:32:31 IP:203.75.xxx.xxx 未訂閱
老大仔大大
我也是在敘述你說的「1.」耶……

MySQL的用法及解釋:
顯示 data 資料表的欄位資訊
SHOW COLUMNS FROM data;

===================引 用 老大仔 文 章===================
一開始看不太懂您要問的問題
您是要問~
1. 要怎麼知道該欄位的設定是否為Null??
還是
2. 要怎麼知道該欄位的是否為Null??

假如是2, 那麼GrandRURU大大已經回答了
但是照您的問題看來
應該是指1
假如是1, 該欄位在設定(Create Table)的時候您就已經給它設為不能null(or 可以為Null)了,
所以填值進去時,您自己就應該要知道哪些欄位不能為Null了,不是嗎??
(雖然還是有語法可以知道某欄位是否允許Null)

hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-07-19 16:56:44 IP:210.242.xxx.xxx 未訂閱
試試 ADO 的 OpenSchema:

ADOConnection1.OpenSchema(siColumns, EmptyParam,EmptyParam,ADODataset1);
ADODataset1.Sort:= 'ordinal_position ASC';
ADODataset1.Filter := 'TABLE_NAME=' QuotedStr('Test');
ADODataset1.Filtered := True;

if ADODataset1.Eof then Exit;
ADODataset1.Next;
ADODataset1.Next;
FieldNameStr := ADODataset1.FieldByName('COLUMN_NAME').AsString;
FieldTypeStr := ADODataset1.FieldByName('data_type').AsString;
FieldiSNull := ADODataset1.FieldByName('is_nullABLE').AsString;
FieldLenStr := ADODataset1.FieldByName('character_maximum_length').AsString;
老大仔
尊榮會員


發表:77
回覆:835
積分:1082
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-07-19 17:10:01 IP:59.120.xxx.xxx 未訂閱
噢~小弟我沒注意看到那行....
只在注意看Client....那段程式碼...
Sorry...G大>"<


===================引 用 GrandRURU 文 章===================
老大仔大大
我也是在敘述你說的「1.」耶……

MySQL的用法及解釋:
顯示 data 資料表的欄位資訊
SHOW COLUMNS FROM data;

===================引 用 老大仔 文 章===================
一開始看不太懂您要問的問題
您是要問~
1. 要怎麼知道該欄位的設定是否為Null??
還是
2. 要怎麼知道該欄位的是否為Null??

假如是2, 那麼GrandRURU大大已經回答了
但是照您的問題看來
應該是指1
假如是1, 該欄位在設定(Create Table)的時候您就已經給它設為不能null(or 可以為Null)了,
所以填值進去時,您自己就應該要知道哪些欄位不能為Null了,不是嗎??
(雖然還是有語法可以知道某欄位是否允許Null)
?
renard
一般會員


發表:2
回覆:40
積分:23
註冊:2007-06-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-07-20 09:53:16 IP:61.62.xxx.xxx 訂閱
Dear All:

Me想,他應該要問的是:
如何用ADOQuery,
1.查詢Table1內的各欄位資料型態與,
2.是否允許Null的資料.

Table1
Field DataType Allow null or not null
F1 int allow null
F2 float allow null
F3 datetime not allow null

P.S.
因為Me也不會,所以Me也想學習一下.3q3q
編輯記錄
renard 重新編輯於 2010-07-20 09:54:12, 註解 無‧
renard 重新編輯於 2010-07-20 09:55:00, 註解 無‧
系統時間:2017-12-18 9:16:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!