只出现 table 没有内容的搜索日期 c#
Search date that appears only table without content c#
这是我的界面应用程序
如果我按日期搜索,看起来像这样:
这是我的代码:
string a = dateTimePicker1.Value.ToString("dd/MM/yyyy");
clsAccess db = new clsAccess(DB_PATH);
string query = "";
query = "select * from vwDataMHSSkripsi where Tgl_Sidang = " + a + "";
DataTable dt = db.GetSummaryData(query);
c1FlexGridPencarianSkripsi.DataSource = dt;
db.CloseDatabaseConnection(); db = null;
我想显示搜索结果,但只显示没有内容的表格
GetSummaryData 看起来像这样:
public System.Data.DataTable GetSummaryData(string SQLStatement)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (conn.State.ToString().Equals("Open"))
{
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(SQLStatement, conn);
using (System.Data.OleDb.OleDbDataAdapter rsAdapter = new System.Data.OleDb.OleDbDataAdapter())
{
rsAdapter.SelectCommand = cmd;
rsAdapter.Fill(dt);
}
}
return dt;
}
谢谢...
如果您添加一个接受参数的 GetSummaryData 函数,您可以使一切变得更安全和更容易。此代码应如下所示:
public System.Data.DataTable GetSummaryData(string SQLStatement,
OleDbParameter[] parameters)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (conn.State == ConnectionState.Open)
{
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(SQLStatement, conn);
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}
using (System.Data.OleDb.OleDbDataAdapter rsAdapter = new System.Data.OleDb.OleDbDataAdapter())
{
rsAdapter.SelectCommand = cmd;
rsAdapter.Fill(dt);
}
}
return dt;
}
您现在可以将示例中调用它的代码更改为:
string query = "";
query = "select * from vwDataMHSSkripsi where Tgl_Sidang = @mydate";
OleDbParameter[] parameters = new OleDbParameter[1];
OleDbParameter param = new OleDbParameter();
param.ParameterName = "@mydate";
param.OleDbType = OleDbType.Date;
param.Value = dateTimePicker1.Value;
parameters[0] = param;
DataTable dt = db.GetSummaryData(query, parameters);
请注意,我已经更改了您的 conn.State 支票。请使用我的,因为使用正确的值比转换为字符串然后检查 "Open".
更有效
附录
我特意允许参数数组而不是单个参数,以防您需要在其他地方使用多个参数调用相同的例程。如果使用多个,请小心。使用 OleDb 时,参数的顺序很重要(相比之下,名称相对无关紧要);您必须按照它们在 SQL 字符串中引用的顺序添加参数。
PS
我应该指出的是,这种方法的必然好处是您无需担心日期格式。该参数将日期时间作为其值(即使 OleDBType 设置为 Date,这实际上是一个日期时间)。图书馆为您处理数据库接口。
这是我的界面应用程序
如果我按日期搜索,看起来像这样:
这是我的代码:
string a = dateTimePicker1.Value.ToString("dd/MM/yyyy");
clsAccess db = new clsAccess(DB_PATH);
string query = "";
query = "select * from vwDataMHSSkripsi where Tgl_Sidang = " + a + "";
DataTable dt = db.GetSummaryData(query);
c1FlexGridPencarianSkripsi.DataSource = dt;
db.CloseDatabaseConnection(); db = null;
我想显示搜索结果,但只显示没有内容的表格
GetSummaryData 看起来像这样:
public System.Data.DataTable GetSummaryData(string SQLStatement)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (conn.State.ToString().Equals("Open"))
{
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(SQLStatement, conn);
using (System.Data.OleDb.OleDbDataAdapter rsAdapter = new System.Data.OleDb.OleDbDataAdapter())
{
rsAdapter.SelectCommand = cmd;
rsAdapter.Fill(dt);
}
}
return dt;
}
谢谢...
如果您添加一个接受参数的 GetSummaryData 函数,您可以使一切变得更安全和更容易。此代码应如下所示:
public System.Data.DataTable GetSummaryData(string SQLStatement,
OleDbParameter[] parameters)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (conn.State == ConnectionState.Open)
{
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(SQLStatement, conn);
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}
using (System.Data.OleDb.OleDbDataAdapter rsAdapter = new System.Data.OleDb.OleDbDataAdapter())
{
rsAdapter.SelectCommand = cmd;
rsAdapter.Fill(dt);
}
}
return dt;
}
您现在可以将示例中调用它的代码更改为:
string query = "";
query = "select * from vwDataMHSSkripsi where Tgl_Sidang = @mydate";
OleDbParameter[] parameters = new OleDbParameter[1];
OleDbParameter param = new OleDbParameter();
param.ParameterName = "@mydate";
param.OleDbType = OleDbType.Date;
param.Value = dateTimePicker1.Value;
parameters[0] = param;
DataTable dt = db.GetSummaryData(query, parameters);
请注意,我已经更改了您的 conn.State 支票。请使用我的,因为使用正确的值比转换为字符串然后检查 "Open".
更有效附录
我特意允许参数数组而不是单个参数,以防您需要在其他地方使用多个参数调用相同的例程。如果使用多个,请小心。使用 OleDb 时,参数的顺序很重要(相比之下,名称相对无关紧要);您必须按照它们在 SQL 字符串中引用的顺序添加参数。
PS
我应该指出的是,这种方法的必然好处是您无需担心日期格式。该参数将日期时间作为其值(即使 OleDBType 设置为 Date,这实际上是一个日期时间)。图书馆为您处理数据库接口。