View Full Version : سوال: ارور table or view does not exist
mohammad_pro
سه شنبه 17 دی 1392, 11:30 صبح
سلام خدمت همه ی دوستان
وقتی می خوام یک سری داده ها رو در جدولم درج کنم با ارور پایین روبه رو میشم
java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
جدولم هم در دیتابیس موجوده اما موقعه درج داده ها با ارور بالا مواجه میشم
از اوراکل هم به عنوان پایگاه داده استفاده می کنم
اسم جدول رو هم چک کردم اونم درسته
a.seieddokht
سه شنبه 17 دی 1392, 11:46 صبح
سلام خدمت همه ی دوستان
وقتی می خوام یک سری داده ها رو در جدولم درج کنم با ارور پایین روبه رو میشم
java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
جدولم هم در دیتابیس موجوده اما موقعه درج داده ها با ارور بالا مواجه میشم
از اوراکل هم به عنوان پایگاه داده استفاده می کنم
اسم جدول رو هم چک کردم اونم درسته
سلام
کد رو کامل بزار تا کمکت کنم
موفق باشید
a.seieddokht
سه شنبه 17 دی 1392, 12:06 عصر
دوست عزیز شما کدهاتونو بزارید تو تگ جاوا تا قشنگ معلوم بشه
و مشکل شما اینجاست که از Prepared Statement استفاده کردید و لی مثل Statement باهاش کار کریدید و خطا میده
اینجا کامل توضیح دادم قبلا (http://barnamenevis.org/showthread.php?432500-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-netbeans-%D8%A8%D8%A7-mysql)
موفق باشید
a.seieddokht
سه شنبه 17 دی 1392, 12:10 عصر
شما کافیه 2 خط اول رو تغییر بدید
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","username", "password");
الیته اسم مخزن یا همون دیتابیس رو من نمیدونم واسه شما چیه شاید xe باشه و user,pss رو وارد کنید
موفق باشید
mohammad_pro
سه شنبه 17 دی 1392, 13:51 عصر
منظورتون چیه مثل Statement باهاش کار کردم
تفاوت این دو تا با هم چیه
اگه امکانش هست توضیح بدین
ممنون از وقتی که میزارین برای پاسخ :لبخندساده::چشمک:
a.seieddokht
سه شنبه 17 دی 1392, 16:07 عصر
خواهش میکنم دوست عزیز کاره بزرگی انجام ندادم
ببینید دوست عزیز 3 تا کلاس داریم
CallableStatement : که باهاش میان Function هایی که با زبان PLSQL ساختن در Oracle یا Method هایی که با زبان SQLJ ساختن در Oracle رو کال میکنن
public void sum(int x,int y) throws Exception
{
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","userName","password");
callableStatement = connection.prepareCall("{? = call function_jam(?,?)}");
callableStatement.registerOutParameter(1,Types.NUM ERIC);
callableStatement.setInt(2,x);
callableStatement.setInt(3,y);
callableStatement.executeUpdate();
System.out.println(callableStatement.getInt(1));
callableStatement.close();
connection.close();
}
Statement : که میشه باهاش دستورات Sql رو اجرا کرد و عیبی که داره اینه که باهاش میشه SQL Injection انجام داد و اینکه دستور sql , مقادیر یعنی پارامترها با هم تو 1 دستور میره سمته database و اصلا یاد نگیری فایدش بیشتره
public void insert() throws Exception
{
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","userName","password");
statement = connection.createStatement();
statement.executeUpdate("INSERT INTO PERSON(ID,NAME) VALUES(1,'ali')");
statement.close();
connection.close();
}
تو کد بالا فکر کن که 1و علی بخوان به صورت متغیر باشن اونوقت کار سخت میشه و باید همش تک کوتیشن بزاری و کد زشت میشه و اینکه ممکنه Injetc پزیر باشه و اصلا یادش نگیر خوب نیست
PreaparedStatement : نسخه پیشرفته تر و جدید تر از Statement که باهاش میتونی دستورات sql رو اجرا کنی ودستور sql جدا بفرستی و پارامترها و مقادیر رو جدا و کد تمیز داشته باشی و Inject پذیر نباشه
public void insert() throws Exception
{
PreparedStatement preparedStatement;
preparedStatement = connection.prepareStatement("INSERT INTO PERSON (ID,NAME,FAMILY) VALUES (?,?,?)");
preparedStatement.setString(1,"45");
preparedStatement.setString(2,"ali");
preparedStatement.setString(3,"akbari");
preparedStatement.executeUpdate();
}
نکته **** با Statement, PreaparedSatetement هم میتونی متدها و فانکش ها ی داخل اوراکل را کال کنی ولی خوب بهتره این کارو نکنی و از CallableStatement استفاده کنی
موفق باشی:لبخندساده:
a.seieddokht
سه شنبه 17 دی 1392, 16:12 عصر
اموزش کامل JDBC (http://www.tutorialspoint.com/jdbc/)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.