利用参数(parameter)进行插入操作,执行ExecuteNonQuery方法成功,插入的却都是空值,
请教各位大侠是怎么回事啊?参数定义是使用的 new OdbcParameter(String name,Object value)并没有添加参数类型
,因为程序中不知道参数具体类型. 

解决方案 »

  1.   

    asp.net夜话之七:ADO.NET介绍 
    ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
    http://blog.csdn.net/zhoufoxcn/archive/2008/10/13/3066799.aspx
    看看这个吧,不要用ODBC了,MySQL有自己的ADO.NET类库。
      

  2.   

    asp.net夜话之七:ADO.NET介绍 
    ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
    http://blog.csdn.net/zhoufoxcn/archive/2008/10/13/3066799.aspx
    看看这个吧,不要用ODBC了,MySQL有自己的ADO.NET类库。
      

  3.   

    在ADO.NET中使用参数化SQL语句的大同小异
    在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Oracle中Clob字段等)使用参数化SQL语句很容易就能赋值,所以本人经常在ADO.NET中使用参数化SQL语句,近几年来陆续跟SQL Server/Oracle/ MySQL/Access打交道,积累了一些心得,现在整理出来供大家参考。
    http://blog.csdn.net/zhoufoxcn/archive/2008/03/19/2195618.aspx
      

  4.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using MySql.Data;
    using MySql.Data.MySqlClient;/// <summary>
    /// 在MySQL中使用参数化SQL的例子
    /// 代码编写:周公
    /// 日期:2008-3-19
    /// 发表网址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/19/2195618.aspx
    /// </summary>
    public class MySqlUtil
    {
        public MySqlUtil()
        {
            
        }    public bool InsertAdmin(string userName, string password, string re, string mail, int departId, int power)
        {
            string sql = "insert into S_Admin(UserName,Password,Re,Mail,DepartId,Power)values(?UserName,?Password,?Re,?Mail,?DepartId,?Power)";
            MySqlConnection connection = new MySqlConnection();
            connection.ConnectionString = "";//此处设置链接字符串
            MySqlCommand command = new MySqlCommand(sql, connection);
            command.Parameters.Add("?UserName", MySqlDbType.VarChar, 60).Value = userName;
            command.Parameters.Add("?Password", MySqlDbType.VarChar, 60).Value = password;
            command.Parameters.Add("?Re", MySqlDbType.VarChar, 60).Value = re;
            command.Parameters.Add("?Mail", MySqlDbType.VarChar, 60).Value = mail;
            command.Parameters.Add("?DepartId", MySqlDbType.Int32, 4).Value = departId;
            command.Parameters.Add("?Power", MySqlDbType.Int32, 4).Value = power;
            connection.Open();
            int rowsAffected = command.ExecuteNonQuery();
            connection.Close();
            command.Dispose();
            return rowsAffected > 0;
        }
    }