做了一个java附加数据库文件的小例子,到了连接的时候遇到了问题,
提示:com.microsoft.sqlserver.jdbc.SQLServerException: '{' 附近有语法错误。网上搜了好多,没有有用的解决方案.
望达人帮忙解决,感激不尽!
package db;import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.dnd.DropTarget;
import javax.swing.JTextField;
import java.awt.Rectangle;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class DropFrame extends JFrame{
        /**
         *
         */
        private JTextField textField1;
        private JTextField textField2;
        private JButton jButtion;        public DropFrame()
        {
                //setTitle("主界面");
                //setSize(400,300);                addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                System.exit(0);
                        }                });
                 JPanel jpLables = new JPanel();
                jpLables.setLayout(new GridLayout(2, 1));        jpLables.add(new JLabel("文件一:(*.mdf)"));
        jpLables.add(new JLabel("文件二:(*.ldf)"));
                textField1=new JTextField("拖动文件到此位置",20);
                textField2=new JTextField("拖动文件到此位置",20);                //textField1.setSize(100,60);
                //textField2.setSize(100,60);                JPanel jpTextFields=new JPanel();
                jpTextFields.setLayout(new GridLayout(2, 1));                //jpTextFields
                jpTextFields.add(textField1);
                jpTextFields.add(textField2);                JPanel p1=new JPanel();
                JPanel p2=new JPanel();                p1.setLayout(new BorderLayout());
                p1.add(jpLables,BorderLayout.WEST);
                p1.add(jpTextFields,BorderLayout.CENTER);
                p2.setLayout(new FlowLayout(FlowLayout.CENTER));
                p2.add(jButtion=new JButton("确认附加"));                        Container contentPane=getContentPane();
                contentPane.setLayout(null);
        p1.setBounds(new Rectangle(30,30,300,80));
        contentPane.add(p1,null);
       p2.setBounds(new Rectangle(100,110,180,100));
        contentPane.add(p2,null);
jButtion.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{        String[] arg=new String[2];
        arg[0]=textField1.getText();
        arg[1]=textField2.getText();        DB d=new DB();
       try{  d.Additional(arg);
        }catch(Exception ex)
        {
                ex.printStackTrace();
        }
}
});
                //JScrollPane
                //美化窗口操作JScrollPane
                new DropTarget(textField1,new TextDropTargetListener(textField1));
                new DropTarget(textField2,new TextDropTargetListener(textField2));                //contentPane.add(textField,"Center");        }}
package db;import java.sql.*;
class DB
{
        public DB()
        {
        }
        public  void Additional(String[] proam)throws Exception
        {                System.out.println(proam[0]);
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                String url="jdbc:sqlserver://localhost:1433;databasename=master";
                String sql="{?=sp_attach_db(?,?,?)}";
                Connection cn=null;
                CallableStatement cmd = null;
                cn = DriverManager.getConnection(url,"sa","accp");
                cmd = cn.prepareCall(sql);
                cmd.registerOutParameter(1,java.sql.Types.INTEGER);
                System.out.println("121");
                cmd.setString(2,setSt("bbs"));
                        cmd.setString(3,setSt(proam[0]));                        cmd.setString(4,setSt(proam[1]));
                cmd.execute();System.out.println("122");
                int k=cmd.getInt(1);
                
               if(k==1)
                        System.out.println("成功");        }
        public String setSt(String st)
        {
            StringBuffer sb=new StringBuffer();
            //这里去掉N也试过了
            sb=sb.append("N\'").append(st).append("\'");
            
            return sb.toString().trim();
        }
}package db;import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;public class Test
{
        public static void main(String[]args )
        {                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int screenWidth = screenSize.width;
        int screenHeight = screenSize.height;
                 // 創建框架
        JFrame frame= new DropFrame();
        frame.setTitle("運營管理平臺");
        frame.setSize(400, 200);        // 取到中間位置
        int x = (screenWidth - frame.getSize().width) / 2;
        int y = (screenHeight - frame.getSize().height) / 2;                // 設置frame屬性
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocation(x, y);
                frame.show();
        }
}

解决方案 »

  1.   

    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.dnd.DnDConstants;
    import java.awt.dnd.DropTargetDragEvent;
    import java.awt.dnd.DropTargetDropEvent;import java.awt.dnd.DropTargetEvent;
    import java.awt.dnd.DropTargetListener;
    import java.io.File;
    import java.io.InputStream;
    import java.util.Iterator;public class TextDropTargetListener implements DropTargetListener {
            private JTextField textArea;
            public TextDropTargetListener(JTextField jta)
            {
                    textArea=jta;
            }        public void dragEnter(DropTargetDragEvent event)
            {
                    //getDropAction返回用户的操作                int a=event.getDropAction();
                    if((a & DnDConstants.ACTION_COPY)!=0)
                    {
                            textArea.setText("ACTION_COPY\n");
                    }
                    if((a & DnDConstants.ACTION_MOVE)!=0)
                    {
                            textArea.setText("ACTION_MOVE\n");
                    }
                    if((a & DnDConstants.ACTION_LINK)!=0)
                    {
                            textArea.setText("ACTION_LINK\n");
                    }                if(!isDragAcceptable(event))
                    {
                            event.rejectDrag();                        return;
                    }
            }        public void drop(DropTargetDropEvent dtde) {
                    if(!isDragAcceptable(dtde))
                    {
                            dtde.rejectDrop();
                            return;
                    }                dtde.acceptDrop(DnDConstants.ACTION_COPY);                Transferable transferable=dtde.getTransferable();                DataFlavor[]flavors=transferable.getTransferDataFlavors();                for(int i=0;i<flavors.length;i++)
                    {
                            DataFlavor df=flavors[i];
                            textArea.setText("MIME Type="+ df.getMimeType()+"\n");
                            try
                            {
                                    if(df.equals(DataFlavor.javaFileListFlavor))
                                    {
                                            java.util.List fileList=(java.util.List)transferable.getTransferData(df);
                                            Iterator iterator=fileList.iterator();
                                            while(iterator.hasNext())
                                            {
                                                    File f=(File)iterator.next();
                                                    textArea.setText(f+"\n");
                                            }
                                    }
                                    else if(df.equals(DataFlavor.stringFlavor))
                                    {
                                            String s=(String)transferable.getTransferData(df);
                                            textArea.setText(s+"\n");
                                    }
                                    else if(df.isMimeTypeEqual("text/plain"))
                                    {
                                            String charset=df.getParameter("charset");
                                            InputStream in= (InputStream)transferable.getTransferData(df);                                        boolean flag=true;                                        int ch;
                                            if(charset.equals("ascil"))
                                            {
                                                    do
                                                    {
                                                            ch=in.read();
                                                            if(ch!=0 && ch!=-1)
                                                            {
                                                                    textArea.setText(""+(char)ch);                                                        }
                                                            else
                                                                    flag=false;
                                                    }while(flag);                                        }
                                            else if(charset.equals("unicode"))
                                            {
                                                    boolean little=true;
                                                    do
                                                    {
                                                            ch=in.read();
                                                            int ch2=in.read();
                                                            if(ch!=-1&&little)
                                                            {
                                                                    ch=(ch&0XFF)|((ch2&0XFF)<<8);                                                        }
                                                            if(ch==0XFFFF)
                                                            {
                                                                    little=false;
                                                            }
                                                            else if(ch!=0&&ch!=-1)
                                                            {
                                                                    textArea.setText(""+(char)ch);
                                                            }
                                                            else little=false;
                                                    }while(little);
                                            }
                                            textArea.setText("\n");                                }                        }catch(Exception e)
                            {
                                    textArea.setText("Error"+e+"\n");
                            }                }
                    //dtde.dropCompele();        }
            private boolean isDragAcceptable(DropTargetDropEvent event) {
                    // TODO Auto-generated method stub                return (event.getDropAction()&DnDConstants.ACTION_COPY_OR_MOVE)!=0;
            }        private boolean isDragAcceptable(DropTargetDragEvent event) {
                    // TODO Auto-generated method stub
                    return (event.getDropAction()&DnDConstants.ACTION_COPY_OR_MOVE)!=0;
            }        public void dragExit(DropTargetEvent dte) {
                    // TODO Auto-generated method stub        }
            public void dragOver(DropTargetDragEvent dtde) {
                    // TODO Auto-generated method stub        }
            public void dropActionChanged(DropTargetDragEvent dtde) {
                    if(!isDragAcceptable(dtde))
                    {
                            dtde.rejectDrag();
                            return;
                    }
            }
    }
    ;