Hallo Jungs, ich verzweifle gerade ein wenig ;(
Ich betreibe eine MS SQL Server 2008 R2 und möchte über ein Java-Programm in beliebiger Instance / Datenbank meine Stored Procedures erstellen, die ein weiteres Programm braucht.
DIe SQL-Query Datei hab ich geschrieben und die lässt sich auch ohne Probleme über den MS SQL Server Mangament ausführen.
Nun möchte ich diese Datei einlesen und über "execute" ausführen lassen. Dazu lese ich mit der folgenden Methode die SQL-Datei aus:
Den String lass ich dann so ausführen:
Nun bekomm ich aber bei der AUsführung den Fehler:
com.microsoft.sqlserver.jdbc.SQLServerException: Falsche Syntax in der Nähe von 'GO'.
Hierzu noch meine SQL-Query:
Wo liegt der Fehler?
Ich betreibe eine MS SQL Server 2008 R2 und möchte über ein Java-Programm in beliebiger Instance / Datenbank meine Stored Procedures erstellen, die ein weiteres Programm braucht.
DIe SQL-Query Datei hab ich geschrieben und die lässt sich auch ohne Probleme über den MS SQL Server Mangament ausführen.
Nun möchte ich diese Datei einlesen und über "execute" ausführen lassen. Dazu lese ich mit der folgenden Methode die SQL-Datei aus:
Java:
public String sqlFileReader(String filepath )
{
String sqlstmt ="";
try
{
BufferedReader br = new BufferedReader(new FileReader(filepath));
String zeile = "";
while ((zeile = br.readLine())!= null)
{
//System.out.println(zeile);
sqlstmt += zeile;
sqlstmt += "\n"; //Damit jede Zeile voneinader getrennt ist
}
br.close();
return sqlstmt;
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
return sqlstmt;
}
Den String lass ich dann so ausführen:
Java:
public void createStoredProcedures(String driver, String address, String port, String name, String user, String pw)
{
try
{
setConfiguration(driver, address, port, name, user, pw);
loadDBDriver();
createConnection();
createStatement();
Filemanagement readSQLFile = new Filemanagement();
String spoutsql = readSQLFile.sqlFileReader(".\\settings\\Create_SP_for_LA06.sql");
if(spoutsql != null)
{
System.out.println(spoutsql);
stmt.executeQuery(spoutsql);
}
else
{
//Fehler werfen
}
closeConnection();
}
catch(SQLException se)
{
se.printStackTrace();
JFrame frame = new JFrame();
String message = se.getMessage();
JOptionPane.showMessageDialog(frame, message,"ERROR by creating Stored Procedure", JOptionPane.ERROR_MESSAGE);
}
}
Nun bekomm ich aber bei der AUsführung den Fehler:
com.microsoft.sqlserver.jdbc.SQLServerException: Falsche Syntax in der Nähe von 'GO'.
Hierzu noch meine SQL-Query:
Java:
IF OBJECT_ID ( 'dbo.usp_createDeviceTable', 'P') IS NOT NULL
DROP PROCEDURE usp_createDeviceTable;
GO
CREATE PROCEDURE usp_createDeviceTable(
@tablename varchar(50)
)
AS
Declare @SQL VarChar(1000)
SELECT @SQL = 'Create Table ' + @tablename
SELECT @SQL = @SQL + '(Id integer NOT NULL IDENTITY(1,1) Primary Key , Name varchar(100) NOT NULL, State varchar(100) NOT NULL)'
Exec (@SQL)
GO
Wo liegt der Fehler?
Zuletzt bearbeitet von einem Moderator: