Need help with database retrieval
This is the code im using to get a column from my database and display its contents into a JTextArea but for some reason it says this in the msdos box
Sending query: SELECT *
FROM words;
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Invalid characte
r value for cast specification on column number 1 (MoreThings)
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3766)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java
:5501)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:567)
at WhiteBoardServer.displayField(WhiteBoardServer.java:423)
at WhiteBoardServer.getWords(WhiteBoardServer.java:406)
at WhiteBoardServer.<init>(WhiteBoardServer.java:43)
at WhiteBoardServer.main(WhiteBoardServer.java:490)
Query successful
And this is the code i used for retieving the information
public void getWords()
try
Statement statement = dbConnection.createStatement();
String query = "SELECT * FROM words";
System.out.println("\nSending query: " + dbConnection.nativeSQL( query ) + "\n" );
ResultSet rs = statement.executeQuery( query );
displayField( rs );
System.out.println( "\nQuery successful\n" );
statement.close();
catch ( SQLException sqlex )
sqlex.printStackTrace();
// Method to display the data from the database for tab1
public void displayField( ResultSet rs )
try
rs.next();
int recordNumber = rs.getInt( 1 );
if ( recordNumber != 0 )
generateT.setText( rs.getString( 1 ) );
else{}
catch ( SQLException sqlex )
sqlex.printStackTrace();
// output.append( sqlex.toString() );
Any help is appreciated
1. Don't do 'SELECT *' it's yucky, and you never know what your gonna get.
2. In one point you are doing getInt and two lines later you are doing setString, on the same column. I think the driver is asking you to make up your mind.
Similar Messages
-
Need help with SQL retrieval for previous month till current date
Hi ,
Need help generating statistics from previous month from date of enquiry till current date of enquiry.
and have to display it according to date.
Date of enquiry : 03/02/2012
Application Type| 01/01/2012 | 02/01/2012 | 03/01/2012 |...... | 31/01/2012 | 01/02/2012 | 02/02/2012 | 03/02/2012 |
sample1 20 30 40
sample 2 40 40 50
sample 3 50 30 30
Hope you guys can help me with this.
RegardsHi,
932472 wrote:
Scenario
1)If i run the query at 12 pm on 03/2/2012. the result i will have to display till the current day.
2)displaying the count of the application made based on the date.
Application type 01012012 | 02012012 | 03012012 | ..... 01022012| 02022012|03022012
sample 1 30 40 50 44 30
sample 2 35 45 55
sample 3 36 45 55Explain how you get those results from the sample data you posted.
It would help a lot if you posted the results in \ tags, as described in the forum FAQ. {message{id=9360002}
SELECT application_type as Application_type
, COUNT (CASE WHEN created_dt = sysdate-3 THEN 1 END) AS 01012012 (should be getting dynamically)
, COUNT (CASE WHEN created_dt = sysdate-4 THEN 1 END) AS 02022012
, COUNT (CASE WHEN created_dt = sysdate-5 THEN 1 END) AS 03022012
, COUNT (CASE WHEN created_dt = sysdate-6 THEN 1 END) AS 04022012
FROM table_1
GROUP BY application_type
ORDER BY application_typeThat's the bais idea.
You can simplify it a little by factoring out the date differences:WITH got_d AS
SELECT qty
, TRUNC ( dt
- ADD_MONTHS ( TRUNC (SYSDATE, 'MON')
, -1
) AS d
FROM table1
WHERE dt >= ADD_MONTHS ( TRUNC (SYSDATE, 'MON')
, -1
AND dt < TRUNC (SYSDATE) + 1
SELECT SUM (CASE WHEN d = 1 THEN qty END) AS day_1
, SUM (CASE WHEN d = 2 THEN qty END) AS day_2
, SUM (CASE WHEN d = 62 THEN qty END) AS day_62
FROM got_d
See the links I mentioned earlier for getting exactly the right number of columns, and dynamic column aliases. -
Need help with database configuration
Hi all,
I have an Oracle 9i release 2 Database running on Windows server 2000. There I intend to insert data using a consol application. The program runs fine from other machines connected to it through lan and data is inserted all right. But when I run the program on the same machine as the database server, it gives the following error message
"ORA-01843: not a valid month
ORA-06512: at "FASTDB.SPINSMODSALESCENTERSMESSAGES", line 16
ORA-06512: at line 1 .."
The program is written in C# and the server has .NET FrameWork 2.0 and MDAC 2.6 installed.
I don't understand if the program were wrong, then how does it run properly from other machines. And if it runs correctly on the other machines then why doesn't it run on the server machine..
The procedure looks like this
CREATE OR REPLACE PROCEDURE SPInsModSalesCentersMessages(pv_1MessageId integer,
pv_2requestMsgs varchar2,
pv_3replyMsgs varchar2,
pv_4messageStatus integer,
pv_5outStatus out integer,
pv_6SerialNo varchar2,
pv_7SaveDateTime varchar2)
AS
vn_IsMsgsId integer;
BEGIN
pv_5outStatus:=-1;
SELECT count(1) into vn_IsMsgsId
FROM TBLDataTranc_Client
WHERE TBLDataTranc_Client.messageId = pv_1MessageId;
IF vn_IsMsgsId = 0 then
INSERT INTO TBLDataTranc_Client(messageId,serialNo,saveDateTime,resquestMsgStr,replyMsgStr,messageStatus)
VALUES(pv_1MessageId,pv_6SerialNo,to_date(pv_7SaveDateTime,'mm/dd/yyyy hh12:mi:ss AM'),pv_2requestMsgs,pv_3replyMsgs,pv_4messageStatus);
ELSE
UPDATE TBLDataTranc_Client
SET resquestMsgStr=pv_2requestMsgs,
replyMsgStr=pv_3replyMsgs,
messageStatus=pv_4messageStatus,
serialNo=pv_6SerialNo,
saveDateTime=to_date(pv_7SaveDateTime,'mm/dd/yyyy hh12:mi:ss AM')
WHERE TBLDataTranc_Client.messageId = pv_1MessageId
and TBLDataTranc_Client.messageStatus =1;
pv_5outStatus:=1;
END if;
end;
Please help me if you can.Hi ...
You can use a StatsPack for guess the best distribution memory with your DB needs.
See metalink Note:228913.1
Regards -
Need help with database migration using export/import
Hi,
I am planning to do a database migration from 8.0.6 to 10.2.0.4. I am using export/import. Please answer some of my queries:
1) Do i need to do full export using SYS/SYSTEM user.
exp80 system/manager file=c:full.dmp log=c:\full.txt full=y consistent=y
2) Will there be any data corruption while export.
3) Is export/import the only method of migration/upgradation.
Please help
Thanks.I'll answer the specifics that I know about your questions, but please look at the post from Srini for additional info:
1) Do i need to do full export using SYS/SYSTEM user.
exp80 system/manager file=c:full.dmp log=c:\full.txt full=y consistent=yA full export will move as much information (metadata/data) as possible. In order to do a full export/import, you need to do this from a
privileged account. A privileged account is one with EXP_FULL_DATABASE for export and IMP_FULL_DATABASE for import.
2) Will there be any data corruption while export.The data in the objects that you are exporting is being read, nothing is written to user data. I'm not sure what this is available in 8.0.6,
but if you need a consistent export, look to see if consistent=y is available in 8.0.6. All this means is that the dump file created will have
consistent data in it.
3) Is export/import the only method of migration/upgradation.If you are changing hardware, the only supported way from 8.0 to 10.2.0.4, that I know of, is using exp/imp.
Hope this helps.
Dean -
NEED HELP WITH DATABASE WEB SERVICE INTEGRATION
Hello everybody. I have created a web service with returns a list of records extracted from a database. It works, Apex references the web service and get the result when I test it, but I want to display results in a page type "Form and Report on Web Service" and when I associate the web service to the page and click on "Finish Button" I get this message:
"This Web service does not have a result tree in its definition that is appropriate for a report. You may wish to run the Form on Web Service wizard instead.".
It is correct, of course, but I do not have an example of how to do an appropriate definition for this kind of report.What kind of definition is it waiting for? What I do in the web service is to return a list of items (a resultset of a query such as "SELECT PRODUCTID, PRODUCTNAME, PRICE, IMAGEHREF FROM PRODUCTS") concatenated in a string (commas-separated values). What kind of output must the web service produce or how have I to structure the associated wsdl document in order to display the result with a "form and report on web service" page?
Every help or example is welcome.
Thanks a lot and have a nice day
Stefano-ITALYi saw that it is giving this below error but not sure why ??
org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method registerEmployee
at org.apache.axis2.util.Utils.getInboundFaultFromMes sageContext(Utils.java:486)
at org.apache.axis2.description.OutInAxisOperationCli ent.handleResponse(OutInAxisOperation.java:343)
at org.apache.axis2.description.OutInAxisOperationCli ent.send(OutInAxisOperation.java:389)
at org.apache.axis2.description.OutInAxisOperationCli ent.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(Op erationClient.java:163)
at webservice.EmployeeServiceStub.registerEmployee(Em ployeeServiceStub.java:488)
at webservice.EmployeeClient.main(EmployeeClient.java :22)can anyone suggest why this might come ?
thanks -
Need help with database connection and trasaction!
Hi, I'm trying to load data from a huge report to DB2. My old way of doing this is: 1. using DriverManger.getConnection to get a connection.
2. Then set autoCommit to false.
3. Keep the connection open.....
4. con.commit once I reach a section, let's say around 5000 records per section.
5. Close the connection once I finish loading, (Finally block)
I'm still new in the java world and kind of concern of the way of what I'm doing. Then I did some research. Perhaps using javax.sql.DataSource is a better approach. But I couldn't use it in WSAD. Do I need do some configuration? I heard it's in j2ee 1.4 . Is that the reason I couldn't use it?
And.......I tried to use DAO pattern to talk with DB. By that way, I have to open and close connection everytime I invoke the dao method. Then how can I control the transaction? Because I don't want to insert each record data in to the table right away. I want to do the commit once I get all records for one section. No idea how can I achieve this.
Any suggestion will be really appreciated!!!I'm still new in the java world and kind of concern
of the way of what I'm doing. Then I did some
research. Perhaps using javax.sql.DataSource is a
better approach. But I couldn't use it in WSAD. Do I
need do some configuration? I heard it's in j2ee 1.4
. Is that the reason I couldn't use it?What you need to do is configure a Connection datasource. WSAD has that. You just need to go through the documentation and find out. I never worked on it.
And.......I tried to use DAO pattern to talk with DB.
By that way, I have to open and close connection
everytime I invoke the dao method. Then how can I
control the transaction? Because I don't want to
insert each record data in to the table right away. I
want to do the commit once I get all records for one
section. No idea how can I achieve this.Since you want to simply insert multiple records, you might want to insert them in a batch. This is available in PreparedStatements.
$ Carol. -
Student needs help with database planning
Preliminary Plan
I work at the headquarters of a small company of 8 offices and 26 employees. I am the central database system. Right now, information is only accessible through me, by me, from me, and to me via fax, phone, mail, or email. I have several spreadsheets with different information resulting from personal information, cell phone information, laptop information, government vehicle information, contract information, and training information.
I want to develop a database that will automatically keep track of this information as entered by the user. Whenever there is a change or update, the system will be able to automatically accept this information into the system. Information will come from each workstation in the office that only the managers and I can see. The managers will however only have access to their individual employee information, but I will have access to ALL the employee information. All information created, provided, and maintained between me and the managers will be conducted through RDBMS. Triggers will be used so that information can be updated or inserted through SQL. LAN-to-LAN connections are already in place so that information on the network can be accessible. Preliminary plan is as follows:
WEEK 2: January 15-21, 2007
Develop preliminary plan for two sentence concept of BPS
WEEK 3: January 22-28, 2007
Finalization of preliminary plan
Creating the database i.e., connecting, granting privileges, adding systems
Designing and creating tables, databases which are already in spreadsheet format
WEEK 4: January 29-February 4, 2007
Designing and creating tables, databases which are already in spreadsheet format
Installing, configuring, and securing the database;
WEEK 5: February 5-11, 2007
Develop triggers using SQL; test database
WEEK 6: February 12-18, 2007
Design, develop, and test user interface application
WEEK 7: February 19-25, 2007
Test application again. Test database again. Test project application and database together.
WEEK 8: February 26-March 4, 2007
Finalize project details to incorporate into a PowerPoint presentation for submission.
WEEK 9: March 5-11, 2007
Demonstrate and present project. Evaluations due.My major is information system. I want to be able to
access information from all 8 stations where the user
inputs the information, but only have access to their
employees and I will have access to all 26 employees.
I being the central database system.Still quite vague, if you ask me. If it's just an entry formular with user authentification, your time schedule may work. Installing XE and developing with APEX could just be the right tool for this job, but without any further information (data structures, authentification concept, user interface) it will remain pure speculation from my side. Why not ask your teacher if he/she thinks your plan is reasonable?
C. -
Need Help with Database Connection
Hello,
i have the order to create a Dynamic pfd with Adobe Live Cycle Designer which takes some source information from a Microsoft Access Database.
I am absolutely new in Adobe Live Cycle Designer, but I have experiences in VBA, C++ and Delphi...
Thanks for HelpOk, got it...
-
Need help with archiving retrieval!
I have been using PS and LR for a few years and now I have CC so I have access to all the apps. I have a huge online backup system going and now am running into issues trying to find photos/vids. I am hoping someone can help me with this question. I currently use CrashPlan+ to back up all my pic/vid files. I have no complaints except when I want to use restore I can only see file type/name but not a preview. So its hit and miss when trying to restore a generic file name photo/vid. My question is, is there an Adobe CC product that I can use to generate separate thumbnails that I can generate and save to a file that has all the files in a given folder. That way I can just restore the thumbnail file for that folder and see what files are in it with preview pics and find which files on the CrashPlan+ restore console to download. That way I can restore a much smaller file with views of all pics vs having to restore a whole folder of 25+mb files just to find the one I want. Thanx in advance.
This forum is only to discuss how the forums operate, not products
If you go to the Forums Index http://forums.adobe.com/index.jspa
You will be able to select a forum for the Adobe product you use
Cloud Forum http://forums.adobe.com/community/creative_cloud -
hi i get this error when trying to create a program -
> Could not allocate space for object 'SNAP' in database 'D01' because the 'PRIMARY' filegroup is full.
can someone tell me how to fix this problem.
thanks in advanceYes,
Wat version of SQL are you using?
For SQL 2000 logon to Enterprise Manager, from the console window navigate to the database and check the name of the database that you have provided. right click and go to properties and check the "datafiles" tab. At the bottom of the screen you will find file properties, check wat are the properties.
also you can delete the data from SNAP table by running some standard progam "RSSNAPDL". Refer SAP Notes 11838, 40918 and 126974 and then implement the program in your system so that the SNAP table doesnt get full.
Thank you
Abhijeet -
Hi,
I need help with log4j logging tool (org.apache.log4j.*) to log into database using JDBCAppender. Have look at my logger code and corresponding log4j.properties file stated below. I'm running this program using Eclipse IDE and it's giving me the following error (highlighted in red) at the end:
log4j: Parsing for [root] with value=[debug, stdout, Roll, CRSDBAPPENDER].
log4j: Level token is [debug].
log4j: Category root set to DEBUG
log4j: Parsing appender named "stdout".
log4j: Parsing layout options for "stdout".
log4j: Setting property [conversionPattern] to [%x %d{HH:mm:ss,SSS} %5p [%t] (%c:%-4L %M) - %m%n].
log4j: End of parsing for "stdout".
log4j: Parsed "stdout" options.
log4j: Parsing appender named "Roll".
log4j: Parsing layout options for "Roll".
log4j: Setting property [conversionPattern] to [%x %d{yyyy.MM.dd HH:mm:ss,SSS} %5p [%t] (%c:%-4L %M) - %m%n].
log4j: End of parsing for "Roll".
log4j: Setting property [file] to [HelloWorld.log].
log4j: Setting property [maxBackupIndex] to [10].
log4j: Setting property [maxFileSize] to [20KB].
log4j: setFile called: HelloWorld.log, true
log4j: setFile ended
log4j: Parsed "Roll" options.
log4j: Parsing appender named "CRSDBAPPENDER".
{color:#ff0000}
Can't find class HelloWorld{color}
import org.apache.log4j.*;
public class HelloWorld {
static Logger log = Logger.getLogger(HelloWorld.class.getName());
public static void main(String[] args) {
try{
// Now, try a few logging methods
MDC.put("myComputerName", "Ravinder");
MDC.put("crsServerName", "ARNDEV01");
log.debug("Start of main()");
log.info("Just testing a log message with priority set to INFO");
log.warn("Just testing a log message with priority set to WARN");
log.error("Just testing a log message with priority set to ERROR");
log.fatal("Just testing a log message with priority set to FATAL");
catch(Exception e){
e.printStackTrace();
------------------------- log4j.properties file ------------------------------
#### Use three appenders - log to console, file and database
log4j.rootCategory=debug, stdout, Roll, CRSDBAPPENDER
log4j.debug=true
# Print only messages of priority WARN or higher for your category
# log4j.category.your.category.name=WARN
# Specifically inherit the priority level
# log4j.category.your.category.name=INHERITED
#### stdout - First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%x %d{HH:mm:ss,SSS} %5p [%t] (%c:%-4L %M) - %m%n
#### Roll - Second appender writes to a file
log4j.appender.Roll=org.apache.log4j.RollingFileAppender
##log4j.appender.Roll.File=${InstanceName}.log
log4j.appender.Roll.File=HelloWorld.log
log4j.appender.Roll.MaxFileSize=20KB
log4j.appender.Roll.MaxBackupIndex=10
log4j.appender.Roll.layout=org.apache.log4j.PatternLayout
log4j.appender.Roll.layout.ConversionPattern=%x %d{yyyy.MM.dd HH:mm:ss,SSS} %5p [%t] (%c:%-4L %M) - %m%n
#### CRSDBAPPENDER - third appender writes to the database
log4j.appender.CRSDBAPPENDER=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.CRSDBAPPENDER.Driver=net.sourceforge.jtds.jdbc.Driver
log4j.appender.CRSDBAPPENDER.URL=jdbc:jtds:sqlserver:/arncorp15:1433;DatabaseName=LOG
log4j.appender.CRSDBAPPENDER.USER=sa
log4j.appender.CRSDBAPPENDER.PASSWORD=p8ss3doff
log4j.appender.CRSDBAPPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.CRSDBAPPENDER.sql=INSERT INTO LOG (computername, crsservername, logtime, loglevel, threadname, filename, linenumber, logtext) VALUES ('%X{myComputerName}', '%X{crsServerName}', '%d{dd MMM yyyy HH:mm:ss,SSS}', '%p', '%t', '%F', '%L', '%m')
#log4j.appender.CRSDBAPPENDER.sql=INSERT INTO LOG(COMPUTERNAME,CRSSERVERNAME,LOGTIME,LOGLEVEL,THREADNAME,FILENAME,LINENUMBER,LOGTEXT) select host_name(),'${CRSServerName}${InstanceName}','%d','%5p','%t','%F','%L','%m%n'
#log4j.appender.CRSDBAPPENDER.sql=INSERT INTO LOG (computername, crsservername, logtime, loglevel, threadname, filename, linenumber, logtext) VALUES ("%X{myComputerName}", "%X{crsServerName}", "%d{dd MMM yyyy HH:mm:ss,SSS}", "%p", "%t", "%F", "%L", "%m")
------------------------------- end of log4j.properties file ------------------------------
Here is the directory structure of my program. My log4j.properties file and HelloWorld.class file are residing in folder HelloWorld\bin.
HelloWorld\bin
HelloWorld\lib
HelloWorld\src
Please note - The same program works fine for console and file appender when I comment the database appender part in my properties file.
Thanks
Ravindertry this :
log4j.appender.PROJECT.Append=false -
Need help with Berkeley XML DB Performance
We need help with maximizing performance of our use of Berkeley XML DB. I am filling most of the 29 part question as listed by Oracle's BDB team.
Berkeley DB XML Performance Questionnaire
1. Describe the Performance area that you are measuring? What is the
current performance? What are your performance goals you hope to
achieve?
We are measuring the performance while loading a document during
web application startup. It is currently taking 10-12 seconds when
only one user is on the system. We are trying to do some testing to
get the load time when several users are on the system.
We would like the load time to be 5 seconds or less.
2. What Berkeley DB XML Version? Any optional configuration flags
specified? Are you running with any special patches? Please specify?
dbxml 2.4.13. No special patches.
3. What Berkeley DB Version? Any optional configuration flags
specified? Are you running with any special patches? Please Specify.
bdb 4.6.21. No special patches.
4. Processor name, speed and chipset?
Intel Xeon CPU 5150 2.66GHz
5. Operating System and Version?
Red Hat Enterprise Linux Relase 4 Update 6
6. Disk Drive Type and speed?
Don't have that information
7. File System Type? (such as EXT2, NTFS, Reiser)
EXT3
8. Physical Memory Available?
4GB
9. Are you using Replication (HA) with Berkeley DB XML? If so, please
describe the network you are using, and the number of Replica’s.
No
10. Are you using a Remote Filesystem (NFS) ? If so, for which
Berkeley DB XML/DB files?
No
11. What type of mutexes do you have configured? Did you specify
–with-mutex=? Specify what you find inn your config.log, search
for db_cv_mutex?
None. Did not specify -with-mutex during bdb compilation
12. Which API are you using (C++, Java, Perl, PHP, Python, other) ?
Which compiler and version?
Java 1.5
13. If you are using an Application Server or Web Server, please
provide the name and version?
Oracle Appication Server 10.1.3.4.0
14. Please provide your exact Environment Configuration Flags (include
anything specified in you DB_CONFIG file)
Default.
15. Please provide your Container Configuration Flags?
final EnvironmentConfig envConf = new EnvironmentConfig();
envConf.setAllowCreate(true); // If the environment does not
// exist, create it.
envConf.setInitializeCache(true); // Turn on the shared memory
// region.
envConf.setInitializeLocking(true); // Turn on the locking subsystem.
envConf.setInitializeLogging(true); // Turn on the logging subsystem.
envConf.setTransactional(true); // Turn on the transactional
// subsystem.
envConf.setLockDetectMode(LockDetectMode.MINWRITE);
envConf.setThreaded(true);
envConf.setErrorStream(System.err);
envConf.setCacheSize(1024*1024*64);
envConf.setMaxLockers(2000);
envConf.setMaxLocks(2000);
envConf.setMaxLockObjects(2000);
envConf.setTxnMaxActive(200);
envConf.setTxnWriteNoSync(true);
envConf.setMaxMutexes(40000);
16. How many XML Containers do you have? For each one please specify:
One.
1. The Container Configuration Flags
XmlContainerConfig xmlContainerConfig = new XmlContainerConfig();
xmlContainerConfig.setTransactional(true);
xmlContainerConfig.setIndexNodes(true);
xmlContainerConfig.setReadUncommitted(true);
2. How many documents?
Everytime the user logs in, the current xml document is loaded from
a oracle database table and put it in the Berkeley XML DB.
The documents get deleted from XML DB when the Oracle application
server container is stopped.
The number of documents should start with zero initially and it
will grow with every login.
3. What type (node or wholedoc)?
Node
4. Please indicate the minimum, maximum and average size of
documents?
The minimum is about 2MB and the maximum could 20MB. The average
mostly about 5MB.
5. Are you using document data? If so please describe how?
We are using document data only to save changes made
to the application data in a web application. The final save goes
to the relational database. Berkeley XML DB is just used to store
temporary data since going to the relational database for each change
will cause severe performance issues.
17. Please describe the shape of one of your typical documents? Please
do this by sending us a skeleton XML document.
Due to the sensitive nature of the data, I can provide XML schema instead.
18. What is the rate of document insertion/update required or
expected? Are you doing partial node updates (via XmlModify) or
replacing the document?
The document is inserted during user login. Any change made to the application
data grid or other data components gets saved in Berkeley DB. We also have
an automatic save every two minutes. The final save from the application
gets saved in a relational database.
19. What is the query rate required/expected?
Users will not be entering data rapidly. There will be lot of think time
before the users enter/modify data in the web application. This is a pilot
project but when we go live with this application, we will expect 25 users
at the same time.
20. XQuery -- supply some sample queries
1. Please provide the Query Plan
2. Are you using DBXML_INDEX_NODES?
Yes.
3. Display the indices you have defined for the specific query.
XmlIndexSpecification spec = container.getIndexSpecification();
// ids
spec.addIndex("", "id", XmlIndexSpecification.PATH_NODE | XmlIndexSpecification.NODE_ATTRIBUTE | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
spec.addIndex("", "idref", XmlIndexSpecification.PATH_NODE | XmlIndexSpecification.NODE_ATTRIBUTE | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
// index to cover AttributeValue/Description
spec.addIndex("", "Description", XmlIndexSpecification.PATH_EDGE | XmlIndexSpecification.NODE_ELEMENT | XmlIndexSpecification.KEY_SUBSTRING, XmlValue.STRING);
// cover AttributeValue/@value
spec.addIndex("", "value", XmlIndexSpecification.PATH_EDGE | XmlIndexSpecification.NODE_ATTRIBUTE | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
// item attribute values
spec.addIndex("", "type", XmlIndexSpecification.PATH_EDGE | XmlIndexSpecification.NODE_ATTRIBUTE | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
// default index
spec.addDefaultIndex(XmlIndexSpecification.PATH_NODE | XmlIndexSpecification.NODE_ELEMENT | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
spec.addDefaultIndex(XmlIndexSpecification.PATH_NODE | XmlIndexSpecification.NODE_ATTRIBUTE | XmlIndexSpecification.KEY_EQUALITY, XmlValue.STRING);
// save the spec to the container
XmlUpdateContext uc = xmlManager.createUpdateContext();
container.setIndexSpecification(spec, uc);
4. If this is a large query, please consider sending a smaller
query (and query plan) that demonstrates the problem.
21. Are you running with Transactions? If so please provide any
transactions flags you specify with any API calls.
Yes. READ_UNCOMMITED in some and READ_COMMITTED in other transactions.
22. If your application is transactional, are your log files stored on
the same disk as your containers/databases?
Yes.
23. Do you use AUTO_COMMIT?
No.
24. Please list any non-transactional operations performed?
No.
25. How many threads of control are running? How many threads in read
only mode? How many threads are updating?
We use Berkeley XML DB within the context of a struts web application.
Each user logged into the web application will be running a bdb transactoin
within the context of a struts action thread.
26. Please include a paragraph describing the performance measurements
you have made. Please specifically list any Berkeley DB operations
where the performance is currently insufficient.
We are clocking 10-12 seconds of loading a document from dbd when
five users are on the system.
getContainer().getDocument(documentName);
27. What performance level do you hope to achieve?
We would like to get less than 5 seconds when 25 users are on the system.
28. Please send us the output of the following db_stat utility commands
after your application has been running under "normal" load for some
period of time:
% db_stat -h database environment -c
% db_stat -h database environment -l
% db_stat -h database environment -m
% db_stat -h database environment -r
% db_stat -h database environment -t
(These commands require the db_stat utility access a shared database
environment. If your application has a private environment, please
remove the DB_PRIVATE flag used when the environment is created, so
you can obtain these measurements. If removing the DB_PRIVATE flag
is not possible, let us know and we can discuss alternatives with
you.)
If your application has periods of "good" and "bad" performance,
please run the above list of commands several times, during both
good and bad periods, and additionally specify the -Z flags (so
the output of each command isn't cumulative).
When possible, please run basic system performance reporting tools
during the time you are measuring the application's performance.
For example, on UNIX systems, the vmstat and iostat utilities are
good choices.
Will give this information soon.
29. Are there any other significant applications running on this
system? Are you using Berkeley DB outside of Berkeley DB XML?
Please describe the application?
No to the first two questions.
The web application is an online review of test questions. The users
login and then review the items one by one. The relational database
holds the data in xml. During application load, the application
retrieves the xml and then saves it to bdb. While the user
is making changes to the data in the application, it writes those
changes to bdb. Finally when the user hits the SAVE button, the data
gets saved to the relational database. We also have an automatic save
every two minues, which saves bdb xml data and saves it to relational
database.
Thanks,
Madhav
[email protected]Could it be that you simply do not have set up indexes to support your query? If so, you could do some basic testing using the dbxml shell:
milu@colinux:~/xpg > dbxml -h ~/dbenv
Joined existing environment
dbxml> setverbose 7 2
dbxml> open tv.dbxml
dbxml> listIndexes
dbxml> query { collection()[//@date-tip]/*[@chID = ('ard','zdf')] (: example :) }
dbxml> queryplan { collection()[//@date-tip]/*[@chID = ('ard','zdf')] (: example :) }Verbosity will make the engine display some (rather cryptic) information on index usage. I can't remember where the output is explained; my feeling is that "V(...)" means the index is being used (which is good), but that observation may not be accurate. Note that some details in the setVerbose command could differ, as I'm using 2.4.16 while you're using 2.4.13.
Also, take a look at the query plan. You can post it here and some people will be able to diagnose it.
Michael Ludwig -
Need Help With File Matching Records
I need help with my file matching program.
Here is how it suppose to work: FileMatch class should contain methods to read oldmast.txt and trans.txt. When a match occurs (i.e., records with the same account number appear in both the master file and the transaction file), add the dollar amount in the transaction record to the current balance in the master record, and write the "newmast.txt" record. (Assume that purchases are indicated by positive amounts in the transaction file and payments by negative amounts.)
When there is a master record for a particular account, but no corresponding transaction record, merely write the master record to "newmast.txt". When there is a transaction record, but no corresponding master record, print to a log file the message "Unmatched transaction record for account number ..." (fill in the account number from the transaction record). The log file should be a text file named "log.txt".
Here is my following program code:
// Exercise 14.8: CreateTextFile.java
// creates a text file
import java.io.FileNotFoundException;
import java.lang.SecurityException;
import java.util.Formatter;
import java.util.FormatterClosedException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import org.egan.AccountRecord;
import org.egan.TransactionRecord;
public class CreateTextFile
private Formatter output1; // object used to output text to file
private Formatter output2; // object used to output text to file
// enable user to open file
public void openTransFile()
try
output1 = new Formatter("trans.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openTransFile
// enable user to open file
public void openOldMastFile()
try
output2 = new Formatter("oldmast.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openOldMastFile
// add transaction records to file
public void addTransactionRecords()
// object to be written to file
TransactionRecord record1 = new TransactionRecord();
Scanner input1 = new Scanner(System.in);
System.out.printf("%s\n%s\n%s\n%s\n\n",
"To terminate input, type the end-of-file indicator",
"when you are prompted to enter input.",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
System.out.printf("%s\n%s",
"Enter account number (> 0) and amount.","? ");
while (input1.hasNext()) // loop until end-of-file indicator
try // output values to file
// retrieve data to be output
record1.setAccount(input1.nextInt()); // read account number
record1.setAmount(input1.nextDouble()); // read amount
if (record1.getAccount() > 0)
// write new record
output1.format("%d %.2f\n", record1.getAccount(), record1.getAmount());
} // end if
else
System.out.println("Account number must be greater than 0.");
} // end else
} // end try
catch (FormatterClosedException formatterClosedException)
System.err.println("Error writing to file.");
return;
} // end catch
catch (NoSuchElementException elementException)
System.err.println("Invalid input. Please try again.");
input1.nextLine(); // discard input so user can try again
} // end catch
System.out.printf("%s %s\n%s", "Enter account number (> 0) ",
"and amount.","? ");
} // end while
} // end method addTransactionRecords
// add account records to file
public void addAccountRecords()
// object to be written to file
AccountRecord record2 = new AccountRecord();
Scanner input2 = new Scanner(System.in);
System.out.printf("%s\n%s\n%s\n%s\n\n",
"To terminate input, type the end-of-file indicator",
"when you are prompted to enter input.",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
System.out.printf("%s\n%s",
"Enter account number (> 0), first name, last name and balance.","? ");
while (input2.hasNext()) // loop until end-of-file indicator
try // output values to file
// retrieve data to be output
record2.setAccount(input2.nextInt()); // read account number
record2.setFirstName(input2.next()); // read first name
record2.setLastName(input2.next()); // read last name
record2.setBalance(input2.nextDouble()); // read balance
if (record2.getAccount() > 0)
// write new record
output2.format("%d %s %s %.2f\n", record2.getAccount(), record2.getFirstName(),
record2.getLastName(), record2.getBalance());
} // end if
else
System.out.println("Account number must be greater than 0.");
} // end else
} // end try
catch (FormatterClosedException formatterClosedException)
System.err.println("Error writing to file.");
return;
} // end catch
catch (NoSuchElementException elementException)
System.err.println("Invalid input. Please try again.");
input2.nextLine(); // discard input so user can try again
} // end catch
System.out.printf("%s %s\n%s", "Enter account number (> 0),",
"first name, last name and balance.","? ");
} // end while
} // end method addAccountRecords
// close file
public void closeTransFile()
if (output1 != null)
output1.close();
} // end method closeTransFile
// close file
public void closeOldMastFile()
if (output2 != null)
output2.close();
} // end method closeOldMastFile
} // end class CreateTextFile--------------------------------------------------------------------------------------------------
// Exercise 14.8: CreateTextFileTest.java
// Testing class CreateTextFile
public class CreateTextFileTest
// main method begins program execution
public static void main( String args[] )
CreateTextFile application = new CreateTextFile();
application.openTransFile();
application.addTransactionRecords();
application.closeTransFile();
application.openOldMastFile();
application.addAccountRecords();
application.closeOldMastFile();
} // end main
} // end class CreateTextFileTest-------------------------------------------------------------------------------------------------
// Exercise 14.8: TransactionRecord.java
// A class that represents on record of information
package org.egan; // packaged for reuse
public class TransactionRecord
private int account;
private double amount;
// no-argument constructor calls other constructor with default values
public TransactionRecord()
this(0,0.0); // call two-argument constructor
} // end no-argument AccountRecord constructor
// initialize a record
public TransactionRecord(int acct, double amt)
setAccount(acct);
setAmount(amt);
} // end two-argument TransactionRecord constructor
// set account number
public void setAccount(int acct)
account = acct;
} // end method setAccount
// get account number
public int getAccount()
return account;
} // end method getAccount
// set amount
public void setAmount(double amt)
amount = amt;
} // end method setAmount
// get amount
public double getAmount()
return amount;
} // end method getAmount
} // end class TransactionRecord -------------------------------------------------------------------------------------------------
// Exercise 14.8: AccountRecord.java
// A class that represents on record of information
package org.egan; // packaged for reuse
import org.egan.TransactionRecord;
public class AccountRecord
private int account;
private String firstName;
private String lastName;
private double balance;
// no-argument constructor calls other constructor with default values
public AccountRecord()
this(0,"","",0.0); // call four-argument constructor
} // end no-argument AccountRecord constructor
// initialize a record
public AccountRecord(int acct, String first, String last, double bal)
setAccount(acct);
setFirstName(first);
setLastName(last);
setBalance(bal);
} // end four-argument AccountRecord constructor
// set account number
public void setAccount(int acct)
account = acct;
} // end method setAccount
// get account number
public int getAccount()
return account;
} // end method getAccount
// set first name
public void setFirstName(String first)
firstName = first;
} // end method setFirstName
// get first name
public String getFirstName()
return firstName;
} // end method getFirstName
// set last name
public void setLastName(String last)
lastName = last;
} // end method setLastName
// get last name
public String getLastName()
return lastName;
} // end method getLastName
// set balance
public void setBalance(double bal)
balance = bal;
} // end method setBalance
// get balance
public double getBalance()
return balance;
} // end method getBalance
// combine balance and amount
public void combine(TransactionRecord record)
balance = (getBalance() + record.getAmount());
} // end method combine
} // end class AccountRecord -------------------------------------------------------------------------------------------------
// Exercise 14.8: FileMatch.java
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.IllegalStateException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.Formatter;
import java.util.FormatterClosedException;
import org.egan.AccountRecord;
import org.egan.TransactionRecord;
public class FileMatch
private Scanner inTransaction;
private Scanner inOldMaster;
private Formatter outNewMaster;
private Formatter theLog;
// enable user to open file
public void openTransFile()
try
inTransaction = new Scanner(new File("trans.txt"));
} // end try
catch (FileNotFoundException fileNotFoundException)
System.err.println("Error opening file.");
System.exit(1);
} // end catch
} // end method openTransFile
// enable user to open file
public void openOldMastFile()
try
inOldMaster = new Scanner(new File("oldmast.txt"));
} // end try
catch (FileNotFoundException fileNotFoundException)
System.err.println("Error opening file.");
System.exit(1);
} // end catch
} // end method openOldMastFile
// enable user to open file
public void openNewMastFile()
try
outNewMaster = new Formatter("newmast.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openNewMastFile
// enable user to open file
public void openLogFile()
try
theLog = new Formatter("log.txt");
catch (SecurityException securityException)
System.err.println("You do not have write access to this file.");
System.exit(1);
} // end catch
catch (FileNotFoundException filesNotFoundException)
System.err.println("Error creating file.");
System.exit(1);
} // end method openLogFile
// update records
public void updateRecords()
TransactionRecord transaction = new TransactionRecord();
AccountRecord account = new AccountRecord();
try // read records from file using Scanner object
System.out.println("Start file matching.");
while (inTransaction.hasNext() && inOldMaster.hasNext())
transaction.setAccount(inTransaction.nextInt()); // read account number
transaction.setAmount(inTransaction.nextDouble()); // read amount
account.setAccount(inOldMaster.nextInt()); // read account number
account.setFirstName(inOldMaster.next()); // read first name
account.setLastName(inOldMaster.next()); // read last name
account.setBalance(inOldMaster.nextDouble()); // read balance
if (transaction.getAccount() == account.getAccount())
while (inTransaction.hasNext() && transaction.getAccount() == account.getAccount())
account.combine(transaction);
outNewMaster.format("%d %s %s %.2f\n",
account.getAccount(), account.getFirstName(), account.getLastName(),
account.getBalance());
transaction.setAccount(inTransaction.nextInt()); // read account number
transaction.setAmount(inTransaction.nextDouble()); // read amount
else if (transaction.getAccount() != account.getAccount())
outNewMaster.format("%d %s %s %.2f\n",
account.getAccount(), account.getFirstName(), account.getLastName(),
account.getBalance());
theLog.format("%s%d","Unmatched transaction record for account number ",transaction.getAccount());
} // end while
System.out.println("Finish file matching.");
} // end try
catch (NoSuchElementException elementException)
System.err.println("File improperly formed.");
inTransaction.close();
inOldMaster.close();
System.exit(1);
} // end catch
catch (IllegalStateException stateException)
System.err.println("Error reading from file.");
System.exit(1);
} // end catch
} // end method updateRecords
// close file and terminate application
public void closeTransFile()
if (inTransaction != null)
inTransaction.close();
} // end method closeTransFile
// close file and terminate application
public void closeOldMastFile()
if (inOldMaster != null)
inOldMaster.close();
} // end method closeOldMastFile
// close file
public void closeNewMastFile()
if (outNewMaster != null)
outNewMaster.close();
} // end method closeNewMastFile
// close file
public void closeLogFile()
if (theLog != null)
theLog.close();
} // end method closeLogFile
} // end class FileMatch-------------------------------------------------------------------------------------------------
// Exercise 14.8: FileMatchTest.java
// Testing class FileMatch
public class FileMatchTest
// main method begins program execution
public static void main( String args[] )
FileMatch application = new FileMatch();
application.openTransFile();
application.openOldMastFile();
application.openNewMastFile();
application.openLogFile();
application.updateRecords();
application.closeLogFile();
application.closeNewMastFile();
application.closeOldMastFile();
application.closeTransFile();
} // end main
} // end class FileMatchTest-------------------------------------------------------------------------------------------------
Sample data for master file:
Master file
Account Number Name Balance
100 Alan Jones 348.17
300 Mary Smith 27.19
500 Sam Sharp 0.00
700 Suzy Green -14.22Sample data for transaction file:
Transaction file Transaction
Account Number Amount
100 27.14
300 62.11
300 83.89
400 100.56
700 80.78
700 1.53
900 82.17 -------------------------------------------------------------------------------------------------
My FileMatch class program above has bugs in it.
The correct results for the newmast.txt:
100 Alan Jones 375.31
300 Mary Smith 173.19
500 Sam Sharp 0.00
700 Suzy Green 68.09The correct results for the log.txt:
Unmatched transaction record for account number 400Unmatched transaction record for account number 900------------------------------------------------------------------------------------------------
My results for the newmast.txt:
100 Alan Jones 375.31
300 Mary Smith 111.08
500 Sam Sharp 0.00
700 Suzy Green -12.69My results for the log.txt
Unmatched transaction record for account number 700-------------------------------------------------------------------------------------------------
I am not sure what is wrong with my code above to make my results different from the correct results.
Much help is appreciated. Please help.From the output, it looks like one problem is just formatting -- apparently you're including a newline in log entries and not using tabs for the newmast output file.
As to why the numbers are off -- just from glancing over it, it appears that the problem is when you add multiple transaction values. Since account.combine() is so simple, I suspect that you're either adding creating transaction objects incorrectly or not creating them when you should be.
Create test input data that isolates a single case of this (e.g., just the Mary Smith case), and then running your program in a debugger or adding debugging code to the add/combine method, so you can see what's happening in detail.
Also I'd recommend reconsidering your design. It's a red flag if a class has a name with "Create" in it. Classes represent bundles of independant state and transformations on that state, not things to do. -
Need help with the session state value items.
I need help with the session state value items.
Trigger is created (on After delete, insert action) on table A.
When insert in table B at least one row, then trigger update value to 'Y'
in table A.
When delete all rows from a table B,, then trigger update value to 'N'
in table A.
In detail report changes are visible, but the trigger replacement value is not set in session value.
How can I implement this?You'll have to create a process which runs after your database update process that does a query and loads the result into your page item.
For example
SELECT YN_COLUMN
FROM My_TABLE
INTO My_Page_Item
WHERE Key_value = My_Page_Item_Holding_Key_ValueThe DML process will only return key values after updating, such as an ID primary key updated by a sequence in a trigger.
If the value is showing in a report, make sure the report refreshes on reload of the page.
Edited by: Bob37 on Dec 6, 2011 10:36 AM -
Hi,
I need some help... if someone can help its great.
I need to make a statement in Oracle SQL that read data from a file and insert in a Oracle Database ... if someone can show me the syntax of it i appreciate..
ThanksOkay, I see you followed the advice in that other thread and started a new post for you question. Congratulations. Your next lesson in forum etiquette is to give your posts a more relevant subject. Pretty much everybody who posts here needs help with oracle; if they need help with cooking catfish they've come to the wrong place.
It that other thread I suggested using SQL*Loader or External Tables might be a more suitable solution. Find out more.
Cheers, APC
Maybe you are looking for
-
I have a HP Envy 4507. My AiO Remote app can't find it. This is not a compatibility issue as I have been selling 4507's which I demonstrate by connecting to them. I originally was able to connect on the one at home but not lately. I keep on seeing th
-
The scanner is not working, how can I solve this
product hp photosmart D110 operating system windows 7 64-bit scanner is not working can´t copy/scann
-
Deployment Error in OC4J Preview
Help. We are having problems deploying our application to OC4J developer preview. We have successfully deployed numerous times before now, but the error we our seeing makes no sense. Could anyone point me in the right direction? I have copied of the
-
Is there any documentation anywhere about what fields you can use in smart playlists for iTunes Match so that the playlist will sync to the cloud and then onto my devices? Smart Playlist syncing just doesn't seem to work for me I know you can not ref
-
What do i need to deploy Oracle 10g in a production environment