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中数据保存至数据库???
应该是
"DataRow row = mydataset.table[0].newRow();"
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外还有其它的方法吗??我的这个表可是有几十万到百万的数据呀,而且还不止这一个表要操作.
}
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.类型需要改成想应的类型
参数写着麻烦:(
目前的问题是要怎么将DataSet...Add(row)后快速的保存到数据库?
需要的是一个单独的函数,DataSet是公共的(其它函数也要用这个DataSet干别的)
但是你必须确定你的表中是有主键的
实在不行的话你就只能这样插入
SqlCommand _cmd = new SqlCommand("insert into 表(Date,Time,Operator,Message) values('"+date+"','"+time+"','"+oper+"','"+message+"')",conn//也就是你的数据库连接)
_cmd.ExcultNoQurty()
OleDbCommandBuilder b=new OleDbCommandBuilder(adapter_mydataset); ... adapter_mydataset.Update(mydataset)
这个方法很不错.估计应该也是最快的
数据库结构:日期,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;
}
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."