ExecuteNonQuery()
分数,最低,最高和平均分数的标题统计部分,然后是每个学生的详细信息 - 每行一个。
我坚持要输出到屏幕。我希望我的输出看起来像这样
string sql = @"INSERT my_table (field1, field2) VALUES (@value1, @value2);" MySqlCommand cmd = new MySqlCommand(sql, connection); // Execute int rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected > 0) { // Query was successful } else { // Query *may* have been successful }
答案 0 :(得分:0)
也许您可以将ostream对象作为参数传入,然后使用该参数的名称替换函数中cout的所有出现。然后你可以运行两次函数
printReport(cout, other args);
printReport(outFile, other args);
(或设置调用自身的功能,这样您就不必每次都输入cout)。 这个方法的唯一问题是我看到你在函数内部抓取输入。如果你想使用上面的方法,你必须移动一些东西。相反,我会设置一个不同的函数,它接受一个字符串作为输入,并将所述字符串插入cout和你的文件。所以而不是必须写
cout<<"hi";
file<<"hi";
你可以做到
...
functionName("hi", outfile);
...
void functionName(string str, ostream outfile)
{
cout<<str;
outfile<<str;
}
希望这有帮助
答案 1 :(得分:0)
通常,以下函数可用于复制文件中的控制台输出。
#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
void print(FILE *f, char const *fmt, ...) {
va_list ap;
//Normal console print
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
//Printing to file
if (f != NULL) {
va_start(ap, fmt);
vfprintf(f, fmt, ap);
va_end(ap);
}
}
如果您只想要控制台输出,只需
即可 print(NULL, "%d\t%d\n", 1, 100);//include any needed C style formatting here
如果您希望将控制台输出保存到文件中,只需将适当的文件指针作为第一个参数传递。
FILE *fp = fopen("logfile.txt","a");
print(fp, "%d\t%d\n, 1, 100);//logs the console output to logfile.txt
控制台窗口格式也将保留在文本文件中。