Sqlserver这东西没少跟他打交道,刚学开发语言时就已经跟他接触了,不要说很精通,但就语法还算是熟悉,但现在开始写C#,发现很C#多了一种SqlServer的参数传入方式,以往我们常常对要传参的Sql语句都是直接通过拼凑Sql语句的方式来实现,但现在C#为什么要专门做一个Sql参数的类来实现呢,经过查找才知道,这样做是有道理的,一是可以优化SQL语句(在oracle的教程的类似的传参SQL语句是只会预编译一次,无论传入多少次参数,都只编译一次,这样是可以优化同一SQL语句频繁使用的情况,SQLSERVER中不知道有没这方面的优化,Sqlserver的存储过程只要有传入参,是不会一次编译的是多次编译......),二是可以检查传入参的数据类型,过滤非法字符...这样可以有效阻止SQL的注入式破解.具体写法如下.
C#:
cmdTmp1.CommandText="INSERT INTO SPDJ Message,TypeCode) VALUES (@p1,@p2)";
cmdTmp1.Parameters.Clear();
cmdTmp1.Parameters.Add(new SqlParameter("@p1",SqlDbType.VarChar,512));
cmdTmp1.Parameters["@p1"].Value="Hi";
cmdTmp1.Parameters.Add(new SqlParameter("@p2",SqlDbType.Int));
cmdTmp1.Parameters["@p2"].Value=2001;
cmdTmp1.ExecuteNonQuery();
cmdTmp1.Parameters.Clear();
java:
PreparedStatement pstmt = con.prepareStatement("Insert into Spdj(Message,TypeCode) Values(?,?);
pstmt.setString(1, "Hi");
pstmt.setInt(2, 2001);
pstmt.execute();
记得以前用SqlServer 2000的时候在“右键数据库->所有任务->导入数据/导出数据”这个选项,但是最近在使用SqlServer 2005 express的时候发现居然没有“导入/导出”功能,这个让人相当郁闷。
后来网上一查才知道是因为我用的是ex ......