public DataSet mydataset = new DataSet();
public OleDbConnection myconnect = new OleDbConnection();private void Init()
{
   string connectstring = "Provider=SQLOLEDB;Data Source=(local); User ID=sa;Initial Catalog=myDataBase" 
    
    myconnect.ConnectionString = connectstring;
    myconnect.Open();
   
    string selecttext = "SELECT * FROM myDataBase";
    OleDbDataAdapter adapter_mydataset = new OleDbDataAdapter(selecttext, myconnect);
    adapter_mydataset.Fill(mydataset); 
}private void WriteToDataBase(string username,string password)
{
     stirng date = DateTime.Now.Date.ToString("yyyy-MM-dd");
     string time = DateTime.Now.TimeOfDay.ToString("HH:mm:ss");
     
     DataRow row = new mydataset.table[0].Rows;
     row["Date"] = date;
     row["Time"] = time;
     row["UserName"] = username;
     row["Password"] = password;
     mydataset.table[0].rows.Add(row);  //---- 这里要怎么将mydataset中数据保存至数据库???

解决方案 »

  1.   

    需要创建OleDbDataAdapter,并设置它的InsertCommand然后调用OleDbDataAdapter 的Update方法就行了
      

  2.   

    OleDbCommandBuilder b=new OleDbCommandBuilder(adapter_mydataset);...adapter_mydataset.Update(mydataset)重点是这个OleDbCommandBuilder(数据表必须有主键)
      

  3.   

    "DataRow row = new mydataset.table[0].Rows;"
    应该是
    "DataRow row = mydataset.table[0].newRow();"
      

  4.   


      private void WriteErrLog(string oper, string message)
            {
                string date = DateTime.Now.Date.ToString("yyyy-MM-dd");
                string time = DateTime.Now.TimeOfDay.ToString("HH:mm:ss");            DataRow row = ErrLog_DataSet.Tables[0].NewRow();
                row["Date"] = date;
                row["Time"] = time;
                row["Operator"] = oper;
                row["Message"] = message;
                          
                ErrLog_DataSet.Tables[0].Rows.Add(row);            //-- 我要在这里加入,除了用OleDbDataAdapter外还有其它的方法吗??我的这个表可是有几十万到百万的数据呀,而且还不止这一个表要操作.
            }
      

  5.   

      String connstring = ******;
                SqlDataAdapter sda = new SqlDataAdapter();
                SqlConnection conn = new SqlConnection(connstring);
                sda.InsertCommand = new SqlCommand("insert into myDataBase values(@Date,@Time,@UserName,@Password)", conn);
                sda.InsertCommand.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime, 8, ParameterDirection.Input, False, 0, 0, "Date", DataRowVersion.Current, Nothing));
                sda.InsertCommand.Parameters.Add(new SqlParameter("@Time", SqlDbType.DateTime, 8, ParameterDirection.Input, False, 0, 0, "Time", DataRowVersion.Current, Nothing));
                sda.InsertCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.DateTime, 8, ParameterDirection.Input, False, 0, 0, "UserName", DataRowVersion.Current, Nothing));
                sda.InsertCommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.DateTime, 8, ParameterDirection.Input, False, 0, 0, "Password", DataRowVersion.Current, Nothing));
                sda.Update(mydataset);
    里面的SqlDbType.类型需要改成想应的类型
    参数写着麻烦:(
      

  6.   

    晕,现在不管它有多少条数据了.
    目前的问题是要怎么将DataSet...Add(row)后快速的保存到数据库?
    需要的是一个单独的函数,DataSet是公共的(其它函数也要用这个DataSet干别的)
      

  7.   

    用他的方法就可以了
    但是你必须确定你的表中是有主键的
    实在不行的话你就只能这样插入
    SqlCommand _cmd = new SqlCommand("insert into 表(Date,Time,Operator,Message) values('"+date+"','"+time+"','"+oper+"','"+message+"')",conn//也就是你的数据库连接)
    _cmd.ExcultNoQurty()
      

  8.   

    学习了,
    OleDbCommandBuilder b=new OleDbCommandBuilder(adapter_mydataset); ... adapter_mydataset.Update(mydataset) 
    这个方法很不错.估计应该也是最快的
      

  9.   

    在写入错误信息时提示:"The name '日期' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted

    数据库结构:日期,char,10;时间,char,10;操作,char,255;错误信息,char,255
     string commandtext = "";
                OleDbCommand command;            commandtext = "SELECT * FROM m_ErrLog";
                command = new OleDbCommand(commandtext, MyConnect_DataBase);
                Adapter_ErrLog_List.SelectCommand = command;            commandtext = "INSERT INTO m_ErrLog (日期,時間,操作,錯誤信息) VALUES (日期 = ?, 時間 = ?, 操和 = ?, 錯誤信息 = ?)";
                command = new OleDbCommand(commandtext, MyConnect_DataBase);
                command.Parameters.Add("1", OleDbType.Char, 10);
                command.Parameters.Add("2", OleDbType.Char, 10);
                command.Parameters.Add("3", OleDbType.Char, 255);
                command.Parameters.Add("4", OleDbType.Char, 255);
                Adapter_ErrLog_List.InsertCommand = command;            commandtext = "DELETE * FROM m_ErrLog WHERE 日期 = ?,時間 = ?,操作 = ?,錯誤信息 = ?";
                command = new OleDbCommand(commandtext, MyConnect_DataBase);
                command.Parameters.Add("1", OleDbType.Char, 10);
                command.Parameters.Add("2", OleDbType.Char, 10);
                command.Parameters.Add("3", OleDbType.Char, 255);
                command.Parameters.Add("4", OleDbType.Char, 255);
                Adapter_ErrLog_List.DeleteCommand = command;            commandtext = "UPDATE m_ErrLog SET 日期 = ?,時間 = ?,操作 = ?,錯誤信息 = ?";
                command = new OleDbCommand(commandtext, MyConnect_DataBase);
                command.Parameters.Add("1", OleDbType.Char, 10);
                command.Parameters.Add("2", OleDbType.Char, 10);
                command.Parameters.Add("3", OleDbType.Char, 255);
                command.Parameters.Add("4", OleDbType.Char, 255);            
                try
                {
                    string selecttext = "SELECT * FROM m_ErrLog";
                    OleDbCommand errlog_adapter_command = new OleDbCommand(selecttext,MyConnect_DataBase);
                    Adapter_ErrLog_List.SelectCommand = errlog_adapter_command;
                    Adapter_ErrLog_List.Fill(DataSet_ErrLog_List);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("獲取程序運行日志時發生錯誤(0-1):" + Environment.NewLine + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Exit();
                }
            }
     private void Write_Errmsg_Errlog(string title, string message)
            {
                string date = DateTime.Now.ToString("yyyy-MM-dd");
                string time = DateTime.Now.ToString("HH:mm:ss");            DataRow row = DataSet_ErrLog_List.Tables[0].NewRow();
                row["日期"] = date;
                row["時間"] = time;
                row["操作"] = title;
                row["錯誤信息"] = message;
                try
                {
                    DataSet_ErrLog_List.Tables[0].Rows.Add(row);
                    Adapter_ErrLog_List.Update(DataSet_ErrLog_List);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("寫入程序運行日志時發生未知錯誤(0-0):" + Environment.NewLine + ex.Message, "警告", MessageBoxButtons.OK,MessageBoxIcon.Warning);
                    return;
                }
      

  10.   

    将 Insert更新了一下:
     commandtext = "INSERT INTO m_ErrLog (日期,時間,操作,錯誤信息) VALUES (  ?,  ?,  ?,  ?)";
                command = new OleDbCommand(commandtext, MyConnect_DataBase);
                command.Parameters.Add("1", OleDbType.Char, 10);
                command.Parameters.Add("2", OleDbType.Char, 10);
                command.Parameters.Add("3", OleDbType.Char, 255);
                command.Parameters.Add("4", OleDbType.Char, 255);
                Adapter_ErrLog_List.InsertCommand = command;
    后提示:
    "The statement has been terminated.\r\nCannot insert the value NULL into column '錯誤信息', table 'MAC_Distribution.dbo.m_ErrLog'; column does not allow nulls. INSERT fails."