您的位置:首页 > 编程语言 > C#

C# 使用OLEDB连接Excel注意事项

2012-07-12 14:35 375 查看
     在使用Microsoft .NET Framework的SQL Server数据提供程序中,sql语句中使用参数的方式和直接在sqlserver读写工具中使用方式是一致的,即是@parameter的形式。

代码如下:

//数据库连接对象conn
SqlCommand cmd = new SqlCommand();
//设置参数值
object value = null;
//注意这里语句中参数的构建方式:@...
string sql = string.Format("select * from {0} where a=@a and b=@b","T");
cmd.Parameters.Add(new SqlParameter[]{new SqlPatameter("b",bvalue),new SqlParameter("a",avalue});
cmd.CommandType=CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = conn;
//查询数据
//....................

     从上面的示例代码中可以看出,sqlserver的参数构造以"@"开头,加上参数名,而在参数赋值语句中,可以不用去考虑sql语句中参数的顺序,参数的值由参数名来确定。

     但是在Microsoft .NET Framework的OLE DB .NET数据提供程序中,不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。如果使用命名参数,framwork编译是没有问题的,代码执行也不会报错,但是sql语句的执行结果就不是想要的结果了。

     在Microsoft .NET Framework的OLE DB .NET数据提供程序中,程序支持以“?”代替参数,参数赋值代码中,按照参数顺序确定每个"?"对应的参数值。

string sql = string.Format(@"update [{0}$] set [{1}]=? where [{1}]=?", tname, item.ColumnName);
cmd.CommandText = sql;
cmd.Parameters.Add(new OleDbParameter("value",newString));
cmd.Parameters.Add(new OleDbParameter("option", oldString));
cmd.ExecuteNonQuery();

    

    注意:在使用Microsoft .NET Framework的SQL Server数据提供程序中是不支持使用"?"代替参数的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息