Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / Databases / November 2007

Tip: Looking for answers? Try searching our database.

Java.sql.SQlException

Thread view: 
Clive_ - 31 Oct 2007 11:07 GMT
Hi,

I am trying to get an SQL statement to check that the users ID and the
ID row in a table match. There maybe up to a hundred users using the
database.

I have two tables in SQl Server express - Users and Property1 both
with a
SurveyID column ie Users.SurveyID and Prop1.SurveyID

The SQL statement is:
String querySQL=("Select * from Prop1_WallFinish where SurveyID =
\"Users.SurveyID\"" );

I am getting a java.sql.SQlException: Invalid column name.

Could anyone point out what is wrong with the statement???

Thanks

Clive
David Harper - 31 Oct 2007 12:27 GMT
> I am trying to get an SQL statement to check that the users ID and the
> ID row in a table match. There maybe up to a hundred users using the
[quoted text clipped - 11 lines]
>
> Could anyone point out what is wrong with the statement???

It looks to me like you have two problems.

First, your select statement is trying to select from a table named
"Prop1_WallFinish" rather than from either of the tables you mention,
Users and Property1.  Perhaps you actually mean

    select * from Property1 ....

Second, your "where" clause looks fishy.  Assuming that you really mean
to select rows from the table named Property1, then your query appears to be

  select * from Property1 where SurveyID = "Users.SurveyID"

which is testing an ID column, which is presumably a number, against a
literal string "Users.SurveyID".

Are you trying to match rows in the Property1 table which have the same
SurveyID column as rows in the Users table?  That's called a join.  It's
a very common type of query, but the syntax is different than what
you're trying to use.

May I suggest that you read the documentation for your database system
and pay close attention to the chapter which explains joins.  It will
tell you how to query across two tables.  Use your database system's
command-line query tool to talk directly to your database server and try
out various different queries before you take the leap to programming
them in Java.  One hurdle at a time ... :-)

David Harper
Cambridge, England
Clive_ - 31 Oct 2007 13:00 GMT
> > I am trying to get an SQL statement to check that the users ID and the
> > ID row in a table match. There maybe up to a hundred users using the
[quoted text clipped - 44 lines]
>
> - Show quoted text -

Hi David,

Thanks for email.

I do not want to create a inner or outer join. I want to make sure
that the UserID match in both tables. To ensure the user enters data
into the correct row.

clive
Lew - 31 Oct 2007 13:40 GMT
> I do not want to create a inner or outer join. I want to make sure
> that the UserID match in both tables. To ensure the user enters data
> into the correct row.

In SQL, "Users.SurveyID" is not the same as "Users"."SurveyID".  The latter
means the "SurveyID" column of the "Users" table where case matters.  Most
RDBMSes prefer a case (lower for Postgres), and only enforce case when you
enclose the identifier in quotes.  However, you must enclose /each/ identifier
separately in quotes, not the whole expression.

You didn't answer David's comment about using a table name in the query that
was not part of your explanation:

> I have two tables in SQl Server express - Users and Property1 both
> with a
> SurveyID column ie Users.SurveyID and Prop1.SurveyID
...
> String querySQL=("Select * from Prop1_WallFinish where SurveyID =
> \"Users.SurveyID\"" );

To go by just your description, you want something like:
 SELECT * FROM Prop1 WHERE Prop1.SurveyID = ?
and use Users.SurveyID to fill the parameter.

Signature

Lew

Clive_ - 02 Nov 2007 11:57 GMT
> > I do not want to create a inner or outer join. I want to make sure
> > that the UserID match in both tables. To ensure the user enters data
[quoted text clipped - 22 lines]
> --
> Lew

Hi Lew,

Will try this.

Thanks for advice.

Cheers

Clive
Thomas Kellerer - 31 Oct 2007 13:37 GMT
David Harper, 31.10.2007 12:27:
>   select * from Property1 where SurveyID = "Users.SurveyID"
>
> which is testing an ID column, which is presumably a number, against a
> literal string "Users.SurveyID".

Unless SQL Server is completely ignoring the SQL standard
"Users.SurveyID" identifies a column name (because of the double
quotes). Character literals have to be enclosed in single quotes

Thomas


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.