473,555 Members | 2,336 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

column types in DB2 vs. other DBMS

So I'm trying to make an application that currently works with MySql,
Postgre, etc... work with DB2.
THe problem I have, is, the varchar column only goes to 32k. CLOB goes
bigger, but at a major cost. SELECT DISTINCT, UPPER,LOWER, ORDER BY,
GROUP BY, among other things don't work on CLOB columns.
Without creating many resource robbing UDF's to emulate functionality,
is there something I'm missing? Is there a better way to store larger
than 32k of data in a DB2 database, and still have it be filterable?
Sep 15 '06 #1
12 7488
yoyo wrote:
So I'm trying to make an application that currently works with MySql,
Postgre, etc... work with DB2.
THe problem I have, is, the varchar column only goes to 32k. CLOB goes
bigger, but at a major cost. SELECT DISTINCT, UPPER,LOWER, ORDER BY,
GROUP BY, among other things don't work on CLOB columns.
Without creating many resource robbing UDF's to emulate functionality,
is there something I'm missing? Is there a better way to store larger
than 32k of data in a DB2 database, and still have it be filterable?
There is always a first. Frankly this is the first time I hear a request
to run DISTINCT, ORDER BY or GROUP BY on large objects.
(UPPER/LOWER I may(!) buy into).
Would you mind telling us what could comes out of ordering a result set
by characters 32k deep into a CLOB objects? Who cares?
Whether two objects are the same (DISTINCT, GROUP BY) should not be
determined by a word document or jpeg. That's just too slow.
(It's not the UDF that's slow in that case it's the comparison itself).

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

IOD Conference
http://www.ibm.com/software/data/ond...ness/conf2006/
Sep 15 '06 #2
Serge Rielau wrote:
yoyo wrote:
>So I'm trying to make an application that currently works with MySql,
Postgre, etc... work with DB2.
THe problem I have, is, the varchar column only goes to 32k. CLOB goes
bigger, but at a major cost. SELECT DISTINCT, UPPER,LOWER, ORDER BY,
GROUP BY, among other things don't work on CLOB columns.
Without creating many resource robbing UDF's to emulate functionality,
is there something I'm missing? Is there a better way to store larger
than 32k of data in a DB2 database, and still have it be filterable?

There is always a first. Frankly this is the first time I hear a request
to run DISTINCT, ORDER BY or GROUP BY on large objects.
(UPPER/LOWER I may(!) buy into).
Would you mind telling us what could comes out of ordering a result set
by characters 32k deep into a CLOB objects? Who cares?
Whether two objects are the same (DISTINCT, GROUP BY) should not be
determined by a word document or jpeg. That's just too slow.
(It's not the UDF that's slow in that case it's the comparison itself).

Cheers
Serge
Mmm...ok sorry, it's not my query. I'm just trying to port the app, and
I was running into some queries that were coughing. I'm not the smarest
cookie when it comes to these complex queries.
They make use of the 'TEXT' datatype in MySQL and Postgre. MySQL limits
it to 64k. Postgre is, well says, unlimited. (I'd imagine it's limited
by other factors)
Given your response, I think I just re-arrangeed the query improperly.

What they were trying to do is this:

SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.

DB2 coughs on this saying you cannot group by one thing when you
selected 2 other things.

SQL0119N An expression starting with "Z" specified in a SELECT clause,
HAVING clause, or ORDER BY clause is not specified in the GROUP BY
clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause
with a column function and no GROUP BY clause is specified.
It you put all the columns in the group by which it what DB2 asks for,
then it coughs on the CLOB column.

The way they did it for postgre was:

select distinct w,x,y,z from mytab where y=something order by z

DB2 coughs on this with
SQL0134N Improper use of a string column, host variable, constant, or
function "X". SQLSTATE=42907

So, I think I just need to re-think what they're tyring to get out of
this. They weren't really trying to group or order on the clob.

The upper/lower thing, on the other hand, so what's the best way to do a
case-insensitive search for a string inside a CLOB? I just want to see
if a user typed string exists in the clob, not paying attention to case.

My apologies for being an idiot, I'm a bit out of my league here, but
was just trying to help out.
Sep 15 '06 #3
yoyo wrote:
Serge Rielau wrote:
yoyo wrote:
So I'm trying to make an application that currently works with MySql,
Postgre, etc... work with DB2.
THe problem I have, is, the varchar column only goes to 32k. CLOB goes
bigger, but at a major cost. SELECT DISTINCT, UPPER,LOWER, ORDER BY,
GROUP BY, among other things don't work on CLOB columns.
Without creating many resource robbing UDF's to emulate functionality,
is there something I'm missing? Is there a better way to store larger
than 32k of data in a DB2 database, and still have it be filterable?
There is always a first. Frankly this is the first time I hear a request
to run DISTINCT, ORDER BY or GROUP BY on large objects.
(UPPER/LOWER I may(!) buy into).
Would you mind telling us what could comes out of ordering a result set
by characters 32k deep into a CLOB objects? Who cares?
Whether two objects are the same (DISTINCT, GROUP BY) should not be
determined by a word document or jpeg. That's just too slow.
(It's not the UDF that's slow in that case it's the comparison itself).

Cheers
Serge

Mmm...ok sorry, it's not my query. I'm just trying to port the app, and
I was running into some queries that were coughing. I'm not the smarest
cookie when it comes to these complex queries.
They make use of the 'TEXT' datatype in MySQL and Postgre. MySQL limits
it to 64k. Postgre is, well says, unlimited. (I'd imagine it's limited
by other factors)
Given your response, I think I just re-arrangeed the query improperly.

What they were trying to do is this:

SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.

DB2 coughs on this saying you cannot group by one thing when you
selected 2 other things.

SQL0119N An expression starting with "Z" specified in a SELECT clause,
HAVING clause, or ORDER BY clause is not specified in the GROUP BY
clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause
with a column function and no GROUP BY clause is specified.
Good. This is *supposed* to happen.

You could "cheat" and use agregate FUNCTIONs:

SELECT w,MIN(SUBSTR(x, 1)),MIN(y),MIN( z) from mytab where y=something
group by w order by z

But x, y, and z might not be from the same record.

BTW, the person who wrote the original query is asking for trouble, and
should not be trusted to write good SQL statements..
It you put all the columns in the group by which it what DB2 asks for,
then it coughs on the CLOB column
Exactly.

1) You can SUBSTR() the CLOB (in both the predicate and the GROUPing
clause) which should work.

2) Doing so will create more GROUPs, which may not be what you want. It
would be best to understand what the application really needs first.
The way they did it for postgre was:

select distinct w,x,y,z from mytab where y=something order by z
DISTINCT and GROUP BY without the use of an aggregate, essentially do
the same thing.

If this was a port itself, the author may also not have any idea what
the application should be doing.
DB2 coughs on this with
SQL0134N Improper use of a string column, host variable, constant, or
function "X". SQLSTATE=42907
Perhaps SUBSTR will help here as well.
So, I think I just need to re-think what they're tyring to get out of
this. They weren't really trying to group or order on the clob.
Yes! It sounds to me like whoever wrote the original SQL, hadn't the
slightest idea of SQL. You should figure out what is needed, write good
SQL here, and then patch the exisitng code with a real query.

If you know what is needed, we would be happy to help write the query.

B.
The upper/lower thing, on the other hand, so what's the best way to do a
case-insensitive search for a string inside a CLOB? I just want to see
if a user typed string exists in the clob, not paying attention to case.

My apologies for being an idiot, I'm a bit out of my league here, but
was just trying to help out.
Sep 15 '06 #4
SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.
Pretty bizarre. I thought messing up group by was a Sybase specialty.
Let's assume:
mytab (w, x, y, z)
1, A, 2, B
1, C, 3, D
2, E, 4, F
2, G, 5, H
Which result do you expect?
The "first" row/group given the ORDER of z
1, A, 2, B
2, E, 4, F
or the "last" row/group given the order of z
1, C, 3, D
2, G, 5, H
or does it not matter?

Here is my best guess using first row per group (without delving into
the mySQL SQL Reference)
SELECT w, x, y, z
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY w ORDER BY z) AS rn,
w, x, y, z
FROM mytab) AS T
WHERE rn = 1
ORDER BY z

Lastly may I ask you to run a small test?
SELECT MAX(LENGTH(<tha ttextcolumn>)) FROM mytab

It appears the 64K were driven by what TEXT can do rather than what was
needed. So before you venture into the world of CLOB, it will be helpful
to find out what size you really need.
DB2 will reward you with much better performance if you stick with VARCHAR

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

IOD Conference
http://www.ibm.com/software/data/ond...ness/conf2006/
Sep 15 '06 #5
Serge Rielau wrote:
SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.
Pretty bizarre. I thought messing up group by was a Sybase specialty.
Let's assume:
mytab (w, x, y, z)
1, A, 2, B
1, C, 3, D
2, E, 4, F
2, G, 5, H
Which result do you expect?
The "first" row/group given the ORDER of z
1, A, 2, B
2, E, 4, F
or the "last" row/group given the order of z
1, C, 3, D
2, G, 5, H
or does it not matter?

Here is my best guess using first row per group (without delving into
the mySQL SQL Reference)
SELECT w, x, y, z
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY w ORDER BY z) AS rn,
w, x, y, z
FROM mytab) AS T
WHERE rn = 1
ORDER BY z

Lastly may I ask you to run a small test?
SELECT MAX(LENGTH(<tha ttextcolumn>)) FROM mytab

It appears the 64K were driven by what TEXT can do rather than what was
needed. So before you venture into the world of CLOB, it will be helpful
to find out what size you really need.
DB2 will reward you with much better performance if you stick with VARCHAR

Cheers
Serge
I've looked at what is really needed for size. 32k is enough for 99% of
the time, but *some* entries will be bigger. (It's a Weblog app
http://www.s9y.org) THe report is that the 64limit has been hit a few
times. But it's a web app, so 64k is the largest generally allowable
textbox input anyway. So if 64 has been hit, I'm sure entries over 32k
have been created alot more. The team at s9y.org has told me just put
32k and leave well enough alone, but my sentiment is DB2 should be able
to handle more than the *other* guys. Re-organizing the SQL to be better
is always a plus as well, which I'm sure their open to.
My database is clean, starting from scratch, so the test won't produce
anything, except my biggest entry so far which is just under 32k. (I'm
using VARCHAR currently). The reason for wanting that column to be CLOB,
well, frankly I'm not really sure. A DB2 developer (no longer at IBM)
orginally started to port this thing to DB2, he choose CLOB(32k) for
that column. Why limit it to 32k and not use a varchar seems really
really odd, but mabey there is a reason. I'm sure he's alot smarter than
me when it comes to this stuff, so I was trying to make the CLOB thing work.
I'm still trying to figure out what results are really intended...
Sep 15 '06 #6
"yoyo" <yo**@ma.comwro te in message
news:ia******** *************** *******@century tel.net...
I've looked at what is really needed for size. 32k is enough for 99% of
the time, but *some* entries will be bigger. (It's a Weblog app
http://www.s9y.org) THe report is that the 64limit has been hit a few
times. But it's a web app, so 64k is the largest generally allowable
textbox input anyway. So if 64 has been hit, I'm sure entries over 32k
have been created alot more. The team at s9y.org has told me just put 32k
and leave well enough alone, but my sentiment is DB2 should be able to
handle more than the *other* guys. Re-organizing the SQL to be better is
always a plus as well, which I'm sure their open to.
My database is clean, starting from scratch, so the test won't produce
anything, except my biggest entry so far which is just under 32k. (I'm
using VARCHAR currently). The reason for wanting that column to be CLOB,
well, frankly I'm not really sure. A DB2 developer (no longer at IBM)
orginally started to port this thing to DB2, he choose CLOB(32k) for that
column. Why limit it to 32k and not use a varchar seems really really odd,
but mabey there is a reason. I'm sure he's alot smarter than me when it
comes to this stuff, so I was trying to make the CLOB thing work.
I'm still trying to figure out what results are really intended...
CLOB and BLOB columns are stored outside of the normal table are in DB2 and
they don't make use of bufferpools, which are limited to a max of 32K page
size. All CLOB and BLOB reads and writes bypass the bufferpool and go
directly to disk, although OS disk caching can help here.

So that is one of the main reasons DB2 limits VARCHAR to just under 32K. In
practice, you need to make sure the row size cannot exceed 32k (minus some
page and row overhead).
Sep 15 '06 #7
Mark A wrote:
CLOB and BLOB columns are stored outside of the normal table are in DB2 and
they don't make use of bufferpools, which are limited to a max of 32K page
size. All CLOB and BLOB reads and writes bypass the bufferpool and go
directly to disk, although OS disk caching can help here.

So that is one of the main reasons DB2 limits VARCHAR to just under 32K. In
practice, you need to make sure the row size cannot exceed 32k (minus some
page and row overhead).
Further, once you are in LOB-land the actual value doesn't matter
anymore. CLOB(32K) will realistically have the same performance as
CLOB(2M) for your 99% case. (Of course if each row is 2MB that won't go
unnoticed).

Using the LOB may well be fast enough for your needs. If it isn't there
are tricks. But let's climb that mountain when we get there.

Cheers
Serge

--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab

IOD Conference
http://www.ibm.com/software/data/ond...ness/conf2006/
Sep 15 '06 #8
yoyo wrote:
Serge Rielau wrote:
> SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.
Pretty bizarre. I thought messing up group by was a Sybase specialty.
Let's assume:
mytab (w, x, y, z)
1, A, 2, B
1, C, 3, D
2, E, 4, F
2, G, 5, H
Which result do you expect?
The "first" row/group given the ORDER of z
1, A, 2, B
2, E, 4, F
or the "last" row/group given the order of z
1, C, 3, D
2, G, 5, H
or does it not matter?

Here is my best guess using first row per group (without delving into
the mySQL SQL Reference)
SELECT w, x, y, z
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY w ORDER BY z) AS rn,
w, x, y, z
FROM mytab) AS T
WHERE rn = 1
ORDER BY z

Lastly may I ask you to run a small test?
SELECT MAX(LENGTH(<tha ttextcolumn>)) FROM mytab

It appears the 64K were driven by what TEXT can do rather than what
was needed. So before you venture into the world of CLOB, it will be
helpful to find out what size you really need.
DB2 will reward you with much better performance if you stick with
VARCHAR

Cheers
Serge

I've looked at what is really needed for size. 32k is enough for 99% of
the time, but *some* entries will be bigger. (It's a Weblog app
http://www.s9y.org) THe report is that the 64limit has been hit a few
times. But it's a web app, so 64k is the largest generally allowable
textbox input anyway. So if 64 has been hit, I'm sure entries over 32k
have been created alot more. The team at s9y.org has told me just put
32k and leave well enough alone, but my sentiment is DB2 should be able
to handle more than the *other* guys. Re-organizing the SQL to be better
is always a plus as well, which I'm sure their open to.
My database is clean, starting from scratch, so the test won't produce
anything, except my biggest entry so far which is just under 32k. (I'm
using VARCHAR currently). The reason for wanting that column to be CLOB,
well, frankly I'm not really sure. A DB2 developer (no longer at IBM)
orginally started to port this thing to DB2, he choose CLOB(32k) for
that column. Why limit it to 32k and not use a varchar seems really
really odd, but mabey there is a reason. I'm sure he's alot smarter than
me when it comes to this stuff, so I was trying to make the CLOB thing
work.
I'm still trying to figure out what results are really intended...
Here's one of the queries:
SELECT c.categoryid,
c.category_name ,
c.category_icon ,
c.category_desc ription,
c.authorid,
c.category_left ,
c.category_righ t,
c.parentid,
a.username,
a.realname
FROM s9y_category AS c
LEFT OUTER JOIN s9y_authors AS a
ON c.authorid = a.authorid
LEFT OUTER JOIN s9y_authorgroup s AS ag
ON ag.authorid = 1
LEFT OUTER JOIN s9y_access AS acl
ON (ag.groupid = acl.groupid AND acl.artifact_id = c.categoryid)

GROUP BY c.categoryid
ORDER BY category_name ASC

Any suggestions on how to reformat this.? I've never used GROUP BY
clauses, I'm having a hard time understanding what they really do.
There's several more queries very similiar.
Sep 16 '06 #9
73blazer wrote:
yoyo wrote:
>Serge Rielau wrote:
>> SELECT w,x,y,z from mytab where y=something group by w order by z
where column x is a clob.
Pretty bizarre. I thought messing up group by was a Sybase specialty.
Let's assume:
mytab (w, x, y, z)
1, A, 2, B
1, C, 3, D
2, E, 4, F
2, G, 5, H
Which result do you expect?
The "first" row/group given the ORDER of z
1, A, 2, B
2, E, 4, F
or the "last" row/group given the order of z
1, C, 3, D
2, G, 5, H
or does it not matter?

Here is my best guess using first row per group (without delving into
the mySQL SQL Reference)
SELECT w, x, y, z
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY w ORDER BY z) AS rn,
w, x, y, z
FROM mytab) AS T
WHERE rn = 1
ORDER BY z

Lastly may I ask you to run a small test?
SELECT MAX(LENGTH(<tha ttextcolumn>)) FROM mytab

It appears the 64K were driven by what TEXT can do rather than what
was needed. So before you venture into the world of CLOB, it will be
helpful to find out what size you really need.
DB2 will reward you with much better performance if you stick with
VARCHAR

Cheers
Serge

I've looked at what is really needed for size. 32k is enough for 99%
of the time, but *some* entries will be bigger. (It's a Weblog app
http://www.s9y.org) THe report is that the 64limit has been hit a few
times. But it's a web app, so 64k is the largest generally allowable
textbox input anyway. So if 64 has been hit, I'm sure entries over 32k
have been created alot more. The team at s9y.org has told me just put
32k and leave well enough alone, but my sentiment is DB2 should be
able to handle more than the *other* guys. Re-organizing the SQL to be
better is always a plus as well, which I'm sure their open to.
My database is clean, starting from scratch, so the test won't produce
anything, except my biggest entry so far which is just under 32k. (I'm
using VARCHAR currently). The reason for wanting that column to be
CLOB, well, frankly I'm not really sure. A DB2 developer (no longer at
IBM) orginally started to port this thing to DB2, he choose CLOB(32k)
for that column. Why limit it to 32k and not use a varchar seems
really really odd, but mabey there is a reason. I'm sure he's alot
smarter than me when it comes to this stuff, so I was trying to make
the CLOB thing work.
I'm still trying to figure out what results are really intended...


Here's one of the queries:
SELECT c.categoryid,
c.category_name ,
c.category_icon ,
c.category_desc ription,
c.authorid,
c.category_left ,
c.category_righ t,
c.parentid,
a.username,
a.realname
FROM s9y_category AS c
LEFT OUTER JOIN s9y_authors AS a
ON c.authorid = a.authorid
LEFT OUTER JOIN s9y_authorgroup s AS ag
ON ag.authorid = 1
LEFT OUTER JOIN s9y_access AS acl
ON (ag.groupid = acl.groupid AND acl.artifact_id = c.categoryid)

GROUP BY c.categoryid
ORDER BY category_name ASC

Any suggestions on how to reformat this.? I've never used GROUP BY
clauses, I'm having a hard time understanding what they really do.
There's several more queries very similiar.
Oh, sorry, category description is the CLOB column.
Sep 16 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
3949
by: Alex_Bxl | last post by:
Hi to all I have to choose a DBMS and a database architecture for an Ebay like website about to be launched. The company wants to use a web hosting service and not host the database on dedicated servers at the office. The database will contain web-only information and lots of back end information that is not really needed to be stored...
4
10416
by: Ron VanDerMaarel | last post by:
Hi, I am not familiar with MySQL, but we are currently looking at it. Currently our software product supports Oracle, DB2, and we want to see what it takes to also include MySQL. One stumbling block we have come across is that it seems that the CREATE TABLE command does not support the CHECK CONSTRAINT on a column. I know there is such a...
9
2066
by: Rick | last post by:
I've created a clustered two column index on a table where the second column is an integer value. When the first column is the same, instead of ordering in numerical order it is ordering 1,10,100,2,20,200 etc. How can I change the behaviour to order the data in numerical order? Thanks, Rick
1
1463
by: p175 | last post by:
Dear Guru's Can anyone please direct me to articles, documents or indeed help explain in 'english' the benefits and advantages of using TYPEs, HEIRARCHYs, TYPE TABLEs and METHODs ? I've tried reading all I can on the topic but I simply end up wondering WHY ? Many thanks, Tim
6
14392
by: axelsino | last post by:
I know this has been asked before and yes, I have read the section in the documentation about it. But, my question is: If I have setup mysql with strict_trans_tables, will MySQL allow "null" defaults in "not null" columns? If the answer is yes, will that information be reflected when I ask for metadata (column information, etc.)? Currently,...
2
1715
by: scott.alfon | last post by:
Hello, i need your help. I want to implement a php-script where I can access to different database types as PostSQL, MySQL etc. Is that possible? Furthermore I want to include an access authorization which defines the write- or read-access of each user. I hope this group could help me....I am looking for good ideas.
1
1834
by: Neeraj | last post by:
Hi all. I have stuck at a strange point.in Database some master table have identity column and some havenot. Then How can i know at runtimes that which table have identity column. According to this i have to write query string. I got dataset from table. and write ds.Tables.Columns.AutoIncrement
8
3065
by: RP | last post by:
I want to retrieve column names (Exact field names) of a table. How to do that?
8
3038
AmberJain
by: AmberJain | last post by:
Hello, My new semester has started and I have a subject named DBMS (Database Management System). This is the first time I'm studying databases and so I'm not feeling very enthusiastic about databases (partly because I already had learnt C/C++ and I feel that programming is a lot easier that DBMS). Nevertheless, I must learn at least one DBMS as...
0
7825
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
1
7588
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
6176
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5452
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5171
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3596
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3575
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1159
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
865
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.