com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '{' - procedure
I am new to java.We have a few tabled valued parameter used in one of our stored procedure when we try with below code then we are getting following error.
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near
'{'.
import java.sql.*;
import com.microsoft.sqlserver.jdbc.SQLServerDataTable; import
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement;
public class DB_SP_Call {
Connection conn = null;
Statement stmt = null;
String dbserver="10.42..:1198";
String db="t1c";
String USER="t1c";
String PWD="t1c";
String sql; static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; public void
runSP(){
String DB_URL = "jdbc:sqlserver://"+dbserver+";databaseName="+db; try{
Class.forName(JDBC_DRIVER);
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PWD);
System.out.println("Creating statement...");
stmt = conn.createStatement();
//SQLServerPreparedStatement pstmt = (SQLServerPreparedStatement)conn.prepareStatement("{call exec
t1c.scnTargetingBYO
#InstrID=?,#CAS=?,#PageNum=?,#PageSize=?,#SortField=?,#TotalRecNum=?
output,#OutputFirmFund=?,#Download=?,#FirmContactData=?,#FirmList=?,#CustTagList=?,#LocationList=?,#Orientation=?,#InvTypeIDList=?,#InvStyleIDList=?,#AdvisoryList=?,#SocialyResposible=?,#TurnoverList=?,#SecurityActivity=?,#InstWithUpside=?,#MarketCapPass=?,#PNI=?,#EventFirmMet=?,#EventType=?,#CorpParticipant=?,#SectorList=?,#GeoIDList=?,#MarketCapStr=?,#HoldType=?,#ActThreshold=?,#SavedDataFlag=?
output,#DisplayGroupFlag=?,#PerPeerFlag=?,#UserId=?,#AccountID=?}");
SQLServerPreparedStatement pstmt = (SQLServerPreparedStatement)conn.prepareStatement("{ call exec
t1c.scnTargetingBYO
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
}");
pstmt.setInt(1, 264998);
pstmt.setString(2, "P");
pstmt.setInt(3,0);
pstmt.setInt(4, 100);
pstmt.setString(5, "Pos DESC");
pstmt.setInt(6, 2308);
pstmt.setInt(7,0);
pstmt.setInt(8, 0);
pstmt.setInt(9, 0);
SQLServerDataTable p10 = new SQLServerDataTable();
p10.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p10.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
pstmt.setStructured(10, "t1c.InvIDTabType", p10);
SQLServerDataTable p11 = new SQLServerDataTable();
p11.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p11.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
pstmt.setStructured(11, "t1c.InvIDTabType", p11);
SQLServerDataTable p12 = new SQLServerDataTable();
p12.addColumnMetadata("LocationID",java.sql.Types.NUMERIC);
p12.addColumnMetadata("LocationTypeID",java.sql.Types.NUMERIC);
Object[] row= new Object[2];
row[0]=new Integer(10006);
row[1]=new Integer(5);
p12.addRow(row);
pstmt.setStructured(12, "t1c.LocationList", p12);
pstmt.setInt(13,1);
SQLServerDataTable p14 = new SQLServerDataTable();
p14.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p14.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
p14.addColumnMetadata("Lev",java.sql.Types.NUMERIC);
Object[] row1= new Object[3];
row1[0]=new Integer(200);
row1[1]=null;
row1[2]=new Integer(2);
p14.addRow(row1);
Object[] row2= new Object[3];
row2[0]=new Integer(600);
row2[1]=null;
row2[2]=new Integer(1);
p14.addRow(row2);
Object[] row3= new Object[3];
row3[0]=new Integer(100);
row3[1]=null;
row3[2]=new Integer(2);
p14.addRow(row3);
Object[] row4= new Object[3];
row4[0]=new Integer(500);
row4[1]=null;
row4[2]=new Integer(1);
p14.addRow(row4);
Object[] row5= new Object[3];
row5[0]=new Integer(300);
row5[1]=null;
row5[2]=new Integer(2);
p14.addRow(row5);
pstmt.setStructured(14, "t1c.InvIDTabType2", p14);
SQLServerDataTable p15 = new SQLServerDataTable();
p15.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p15.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
p15.addColumnMetadata("Lev",java.sql.Types.NUMERIC);
pstmt.setStructured(15, "t1c.InvIDTabType2", p15);
pstmt.setInt(16,0);
pstmt.setString(17,"NULL");
SQLServerDataTable p18 = new SQLServerDataTable();
p18.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p18.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
pstmt.setStructured(18, "t1c.InvIDTabType", p18);
pstmt.setInt(19,0);
pstmt.setInt(20,0);
pstmt.setInt(21,0);
pstmt.setInt(22,0);
pstmt.setInt(23,3);
SQLServerDataTable p24 = new SQLServerDataTable();
p24.addColumnMetadata("EventID",java.sql.Types.NUMERIC);
p24.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p24.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
pstmt.setStructured(24, "cms.EvtLinkTabType", p24);
SQLServerDataTable p25 = new SQLServerDataTable();
p25.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p25.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
pstmt.setStructured(25, "t1c.InvIDTabType", p25);
SQLServerDataTable p26 = new SQLServerDataTable();
p26.addColumnMetadata("Type",java.sql.Types.VARCHAR);
p26.addColumnMetadata("ID",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID3",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID4",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID5",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID6",java.sql.Types.NUMERIC);
p26.addColumnMetadata("ID7",java.sql.Types.NUMERIC);
pstmt.setStructured(26, "t1c.InvSpecialIDTabType2", p26);
SQLServerDataTable p27 = new SQLServerDataTable();
p27.addColumnMetadata("Type",java.sql.Types.VARCHAR);
p27.addColumnMetadata("ID",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID1",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID2",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID3",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID4",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID5",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID6",java.sql.Types.NUMERIC);
p27.addColumnMetadata("ID7",java.sql.Types.NUMERIC);
pstmt.setStructured(27, "t1c.InvSpecialIDTabType2", p27);
pstmt.setString(28,"NULL");
pstmt.setInt(29,1);
SQLServerDataTable p30 = new SQLServerDataTable();
p30.addColumnMetadata("Category", java.sql.Types.VARCHAR);
p30.addColumnMetadata("ActType", java.sql.Types.NUMERIC);
p30.addColumnMetadata("Threshold", java.sql.Types.VARCHAR);
p30.addColumnMetadata("Min", java.sql.Types.NUMERIC);
p30.addColumnMetadata("Max", java.sql.Types.NUMERIC);
Object[] row6= new Object[5];
row6[0]=new String("O");
row6[1]=new Integer(0);
row6[2]=new String("S");
row6[3]=new Integer(1);
row6[4]=null;
p30.addRow(row6);
Object[] row7= new Object[5];
row7[0]=new String("F");
row7[1]=null;
row7[2]=new String("E");
row7[3]=new Integer(5);
row7[4]=null;
p30.addRow(row7);
pstmt.setStructured(30, "t1c.InvActThresholdTabType", p30);
pstmt.setInt(31,2);
pstmt.setInt(32,2946);
pstmt.setInt(33,0);
pstmt.setInt(34,234568);
pstmt.setInt(35,21022);
ResultSet rs = pstmt.executeQuery();
//ResultSet rs = pstmt.execute();
ResultSetMetaData metaData = rs.getMetaData();
//System.out.println("Hi, fetching resultset.........");
System.out.println(metaData.getColumnCount());
while(rs.next()){
int intdata = rs.getInt("LgcyInvestorID");
System.out.println(intdata);
}
}catch(Exception e){ e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}
catch(SQLException se2)
{
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}
}
public static void main(String[] args) {
DB_SP_Call dbcall= new DB_SP_Call();
dbcall.runSP(); }
}
Request experts to please help in this regard.
Related
An unhandled exception in the designer
I've created a project in Visual Studio 2019 which has several user controls in a form called Home. All goes right until today. After rebuilding my project Home form shows an error saying The control system.windows.forms.form has thrown an unhandled exception in the designer and has been desabled. Exception : An attempt to attach an auto-named database for file c:\program files(x86)\Microsoft Visual Studio\2019\Enterprise\common7\ide\database\pharmacy.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on unc share. I checked the connection code, and it looks ok. But still the error isn't solved. Code: SqlConnection con = new SqlConnection(#"Data Source=LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Final Project BCA\PharmacyManagementSystemCSharp\Database\pharmacy.mdf;Integrated Security=True"); con.Open() String str = "Select max(id) from supp;"; SqlCommand cmd = new SqlCommand(str, con); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { String val = dr[0].ToString(); if (val == "") { ..... } private void button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(#"Data Source= (LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Final Project BCA\PharmacyManagementSystemCSharp\Database\pharmacy.mdf;Integrated Security=True"); con.Open(); try { String str = "Insert into supp(name,email,mobile,addr,s_code) values('" + Sup_Name.Text + "','" + Sup_Email.Text + "','" + Sup_Mobile.Text + "','" + Sup_Add.Text + "','" + Sup_Code.Text + "');"; SqlCommand cmd = new SqlCommand(str, con); cmd.ExecuteNonQuery(); String str1 = "select max(ID) from supp;"; SqlCommand cmd1 = new SqlCommand(str1, con); SqlDataReader dr = cmd1.ExecuteReader(); if (dr.Read()) { MessageBox.Show("Inserted Supplier Data SuccessFully.."); using (SqlConnection con1 = new SqlConnection(#"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Final Project BCA\PharmacyManagementSystemCSharp\Database\pharmacy.mdf;Integrated Security=True")) { String str2 = "Select * from supp"; SqlCommand cmd2 = new SqlCommand(str2, con1); SqlDataAdapter sda = new SqlDataAdapter(cmd2); DataTable dt = new DataTable(); sda.Fill(dt); SupplierDataGV.DataSource = new BindingSource(dt, null); } Sup_Name.Text = ""; Sup_Code.Text = ""; Sup_Email.Text = ""; Sup_Mobile.Text = ""; Sup_Add.Text = ""; } } catch (SqlException ex) { MessageBox.Show(ex.Message); } }
getting the System.Threading.Tasks.Task`1[System.Int32] error
i am trying to convert my code to a sync but when i run it i get in one of my vars the value "System.Threading.Tasks.Task`1[System.Int32]" instead of the expected ans i have read most of the same questions asked in this topic but none of them helped me solved the problem i tried to use properly the await but its isn't helped public async Task<int> userloginAsync(string name,string pass) { using (SqlConnection con = new SqlConnection(#"/////:P//////")) { using (SqlCommand cmd = new SqlCommand("UserLoginPro")) { cmd.Connection = con; cmd.CommandText = "SELECT count(id) FROM user_table where name =#name and password =#password; "; cmd.Parameters.AddWithValue("#name", name); cmd.Parameters.AddWithValue("#password", pass); await con.OpenAsync(); var ans1 = await cmd.ExecuteScalarAsync(); var ans = ans1.ToString(); con.Close(); int res = Convert.ToInt32(ans); con.Close(); return res; } } } its should query the mssql if there is an match to inputs(username and password) and if there is return 1 if not 0 (in the DB there is unique usernames so it can be only one )
Iphone Push notification in hindi is not received
I am sending push notification for Iphone from an asp.net application Like this- String msg5 = "{\"aps\":{\"NewsId\":3156,\"NewCat\":\"Agra\",\"Date1\":\"11Apr2015\",\"content-available\":1,\"alert\":\"HelloWorld\",\"sound\":\"default\",\"badge\":2}}"; and it is received by the client side perfectly. But When I place some Hindi Data in place of "HelloWorld" on alert key, Notification is not received by client side. Please Explain me what is the issue. My code to send Notification is - public static void pushMessage(string deviceID) { int port = 2195; String hostname = "gateway.sandbox.push.apple.com"; String certificatePath = System.Web.Hosting.HostingEnvironment.MapPath("~/Certificates.p12"); //X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(certificatePath), "");//password X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(certificatePath), "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); X509Certificate2Collection certificatesCollection = new X509Certificate2Collection(clientCertificate); TcpClient client = new TcpClient(hostname, port); SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Tls, false); MemoryStream memoryStream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(memoryStream); writer.Write((byte)0); writer.Write((byte)0); writer.Write((byte)32); writer.Write(HexStringToByteArray(deviceID.ToUpper())); String msg4 = "{\"aps\":{\"NewsId\":3156,\"NewCat\":\"Agra\",\"Date1\":\"11Apr2015\",\"content-available\":1,\"alert\":\"मुख्यमंत्री ने जर्मनी के उद्यमियों को राज्य में निवेश के लिए आमंत्रित किया\",\"sound\":\"default\",\"badge\":2}}"; String msg5 = "{\"aps\":{\"NewsId\":3156,\"NewCat\":\"Agra\",\"Date1\":\"11Apr2015\",\"content-available\":1,\"alert\":\"HelloWorld\",\"sound\":\"default\",\"badge\":2}}"; writer.Write((byte)0); writer.Write((byte)msg5.Length); byte[] b1 = System.Text.Encoding.UTF8.GetBytes(msg5); writer.Write(b1); writer.Flush(); byte[] array = memoryStream.ToArray(); sslStream.Write(array); sslStream.Flush(); client.Close(); } catch (System.Security.Authentication.AuthenticationException ex) { client.Close(); } catch (Exception e) { client.Close(); } But In place of UTF8 I use default encoding Like this byte[] b1 = Encoding.UTF8.GetBytes(msg5) Hindi text is received as ?????
Try this code, working fine for me.. Changes done write b1.length instead of msg5.length(as in hindi length vary from original text). public static void pushMessage(string deviceID, string text) { int port = 2195; String hostname = "gateway.sandbox.push.apple.com"; String certificatePath = System.Web.Hosting.HostingEnvironment.MapPath("~/cert.p12"); X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(certificatePath), "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); X509Certificate2Collection certificatesCollection = new X509Certificate2Collection(clientCertificate); TcpClient client = new TcpClient(hostname, port); SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { sslStream.AuthenticateAsClient(hostname, certificatesCollection, SslProtocols.Tls, false); MemoryStream memoryStream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(memoryStream); writer.Write((byte)0); writer.Write((byte)0); writer.Write((byte)32); writer.Write(HexStringToByteArray(deviceID.ToUpper())); String msg5 = "{\"aps\":{\"NewsId\":3156, \"alert\":\"" + text + "\",\"content-available\":\"1\"}}"; writer.Write((byte)0); byte[] b1 = Encoding.UTF8.GetBytes(msg5); writer.Write((byte)b1.Length); writer.Write(b1); writer.Flush(); byte[] array = memoryStream.ToArray(); sslStream.Write(array); sslStream.Flush(); client.Close(); } catch (System.Security.Authentication.AuthenticationException ex) { client.Close(); } catch (Exception e) { client.Close(); } }
Stored procedure error with ADO.NET
I have a situation here. My stored procedure works exactly fine the way I want in SQL Server. However, I'm unable to implement the same in ADO.NET. Here is my stored procedure: Create Procedure bridge_Type( #EmpID INT, #Name varchar(50), #Mob2 numeric(10,0), #Email varchar(50), #Type varchar(50) ) AS DECLARE #TYPEID int Set NOCOUNT OFF BEGIN TRANSACTION INSERT INTO dbo.EmpType VALUES (#Type) SET #TYPEID = SCOPE_IDENTITY() IF ##ERROR <> 0 BEGIN ROLLBACK RETURN END Insert into dbo.Emp VALUES (#EmpID, #Name, #Mob2, #Email, #TYPEID) IF ##ERROR <> 0 BEGIN ROLLBACK RETURN END COMMIT Here is my ADO.NET connections for simple registration process. public void InsertInfo() { String empdb = #"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=EmployeeDB;Integrated Security=True"; SqlConnection conn = new SqlConnection(empdb); SqlCommand cmd = new SqlCommand("bridge_Type", conn); cmd.CommandType = CommandType.StoredProcedure; try { conn.Open(); /*cmd.Parameters.Add(new SqlParameter("#EmpID", TextBox1.Text)); cmd.Parameters.Add(new SqlParameter("#Name", TextBox2.Text)); cmd.Parameters.Add(new SqlParameter("#Mob2", TextBox3.Text)); cmd.Parameters.Add(new SqlParameter("#Email", TextBox4.Text)); cmd.Parameters.Add(new SqlParameter("#Emptype", dropdown1.SelectedValue)); cmd.Parameters.Add(new SqlParameter("#Emptype", SqlDbType.VarChar, 50)); cmd.Parameters("#Emptype").Value = dropdown1.SelectedValue; */ cmd.Parameters.Add(new SqlParameter("#EmpID", SqlDbType.Int)); cmd.Parameters["#EmpID"].Value = Convert.ToInt32(TextBox1.Text); cmd.Parameters.Add(new SqlParameter("#Name", SqlDbType.VarChar, 50)); cmd.Parameters["#Name"].Value = TextBox2.Text; cmd.Parameters.Add(new SqlParameter("#Mob2", SqlDbType.Int)); cmd.Parameters["#Mob2"].Value = TextBox3.Text; cmd.Parameters.Add(new SqlParameter("#Email", SqlDbType.VarChar, 50)); cmd.Parameters["#Email"].Value = TextBox4.Text; cmd.Parameters.Add(new SqlParameter("#Emptype", SqlDbType.VarChar, 50)); cmd.Parameters["#Emptype"].Value = dropdown1.SelectedValue; cmd.ExecuteNonQuery(); } catch (System.Data.SqlClient.SqlException ex) { string msg = "Insert Error:"; msg += ex.Message; throw new Exception(msg); } finally { if (conn != null) { conn.Close(); } } } protected void Button1_Click(object sender, EventArgs e) { InsertInfo(); }
It looks like you missed a conversion to an int in your #Mob2 parameter: cmd.Parameters.Add(new SqlParameter("#Mob2", SqlDbType.Int)); cmd.Parameters["#Mob2"].Value = Convert.ToInt32(TextBox3.Text); EDIT: Thanks to David for seeing this. The last parameter you are adding is called #Emptype, but the stored proc is expecting it to be named #Type.
blackberry file uploading to server
I am trying to upload file to server and for that I try so many different codes but I can't get success. In this code connection is created successfully, but at the time of reading file and posting data to server by creating header... class ConnectionThread extends Thread { DataOutputStream outputStream = null; DataInputStream inputStream = null; String boundary = "*****"; String lineEnd = "\r\n"; String twoHyphens = "--"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 2*1024*1024; DataInputStream fileInputStream = null; public void run() { try { ConnectionFactory connFact = new ConnectionFactory(); ConnectionDescriptor connDesc; connDesc = connFact.getConnection("http://www.myserver/upload.php"); if (connDesc != null) { HttpConnection conn; conn = (HttpConnection)connDesc.getConnection(); conn.setRequestMethod(conn.POST); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("ENCTYPE", "multipart/form-data"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); outputStream = new DataOutputStream( conn.openDataOutputStream() ); outputStream.writeChars(twoHyphens + boundary + lineEnd); outputStream.writeChars("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + "files:///SDCard/bb.txt" +"\"" + lineEnd); outputStream.writeChars(lineEnd); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // Read file FileConnection fis=(FileConnection)Connector.open("file:///SDCard/bb.txt"); InputStream inputStream = fis.openInputStream(); ByteArrayOutputStream bos=new ByteArrayOutputStream(); int buffersize=1024*1024; byte[] buffer=new byte[buffersize]; int length=0; while((length=inputStream.read(buffer))!=-1) { bos.write(buffer,0,length); } byte[] imagedata=bos.toByteArray(); outputStream.write(imagedata); outputStream.writeChars(lineEnd); outputStream.writeChars(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) int serverResponseCode = conn.getResponseCode(); final String serverResponseMessage = conn.getResponseMessage(); fileInputStream.close(); outputStream.flush(); outputStream.close(); } } catch (Exception e) { } } plz somebody help... thanks in advance..
Try This link, This code is support to upload file on Server using multi part . it can also work on blackberry , With some modifications needed. http://www.developer.nokia.com/Community/Wiki/HTTP_Post_multipart_file_upload_in_Java_ME