我想查询任意年月日,比如查询所有2005年进货的货物信息,年为2005,日和月为空。
就是说,年月日,可以空一个或二个,但不能全部为空
我写的的Sql语句是:
{
int year, month, day;
if(txtYear.Text==""||txtMonth.Text==""||txtDay.Text=="")
{ MessageBox.show("不能全部为空!","错误提示"); return; }
try
{
year = Convert.ToInt32(txtYear.Text);
month = Convert.ToInt32(txtMonth.Text);
day = Convert.ToInt32(txtDay.Text);
}
catch(FormatException e1)
{MessageBox.show(e1.Message,"错误提示"); return;}
string str1 = "year(" + Clom + ")='" + year + "' and month(" + Clom + ")='" + month + "' and day(" +Clom + ")='" + day + "'"; //Clom是列名!
StrSel = "select * from " + table + " where " + str1 + "";//Sql查询语句
//其它无关的代码就不写了
}
点击查询时,年月日任意一个为空,则程序会报错.
如果用if语句来判断,则要写好多代码
我知道有一个Convert的函数可以转换成“yyy-mm-dd”格式,但不知怎么写 。
查了百度和SQL联机丛书还是不会写
怎么办?高手指点迷津呀截图在附件
就是说,年月日,可以空一个或二个,但不能全部为空
我写的的Sql语句是:
{
int year, month, day;
if(txtYear.Text==""||txtMonth.Text==""||txtDay.Text=="")
{ MessageBox.show("不能全部为空!","错误提示"); return; }
try
{
year = Convert.ToInt32(txtYear.Text);
month = Convert.ToInt32(txtMonth.Text);
day = Convert.ToInt32(txtDay.Text);
}
catch(FormatException e1)
{MessageBox.show(e1.Message,"错误提示"); return;}
string str1 = "year(" + Clom + ")='" + year + "' and month(" + Clom + ")='" + month + "' and day(" +Clom + ")='" + day + "'"; //Clom是列名!
StrSel = "select * from " + table + " where " + str1 + "";//Sql查询语句
//其它无关的代码就不写了
}
点击查询时,年月日任意一个为空,则程序会报错.
如果用if语句来判断,则要写好多代码
我知道有一个Convert的函数可以转换成“yyy-mm-dd”格式,但不知怎么写 。
查了百度和SQL联机丛书还是不会写
怎么办?高手指点迷津呀截图在附件
解决方案 »
- 真心求一个识别图片是否被PS的方法,C#
- C# socket连接建立时,如何判断对方已经与其他socket建立连接
- DataGridView怎样检查当前单元格是否处于编辑状态?
- 正则遍历URL取出源码.再正则源码.再正则取出源码.再正则...多层循环
- udpclient 代码优化 udpclient 占用Cpu很高,求高手给个好方法
- 听说.NET开源了 可有人知道源代码到哪里下
- C#中dll的问题
- VS.net中新建一个js或txt文件后,如何将其编码格式由默认的ANSI改成UTF-8呢?
- C#开发windows app中得到数据表中的数据的问题
- 怎样在C# window中实现用代码指定picturebox的图片?
- DataGrid控件的CaptionText属性问题
- GetHostEntry 方法的小问题
{
year = Convert.ToInt32(txtYear.Text);
month = Convert.ToInt32(txtMonth.Text);
day = Convert.ToInt32(txtDay.Text);
} 这里如果Text的内容为空,则转换会报错可以写成try
{
year = Convert.ToInt32( "0" + txtYear.Text.Trim());
month = Convert.ToInt32( "0" + txtMonth.Text.Trim());
day = Convert.ToInt32( "0" + txtDay.Text.Trim());
}
实际应用中最好用参数查询或使用存储过程string szFilter = String.Empty;
if (txtYear.Text != "")
szFilter = "YEAR(stock_date)=" + txtYear.Text;if (txtMonth.Text != "")
szFilter += "AND MONTH(stock_date) =" + txtMonth.Text;if (txtDay.Text != "")
szFilter += "AND DAY(stock_data)= " + txtDay;
if (szFilter == String.Empty)
{
lblInfo.Text="不能全为空<BR>";
return;
}string szSql = "SELECT * FROM [table] WHERE " + szFilter;
何为参数查询?能不能简单解释一下
但不知为会被SQL注入攻击?
书店有没有书籍参考?
想看关于这方面的书籍~~
string szFilter = String.Empty;
if (txtYear.Text != "")
szFilter = " YEAR(stock_date)=" + txtYear.Text;
if (txtMonth.Text != "")
{
if(szFilter == String.Empty)
szFilter = " MONTH(stock_date) =" + txtMonth.Text;
else
szFilter += " AND MONTH(stock_date) =" + txtMonth.Text;
}
if (txtDay.Text != "")
{
if(szFilter == String.Empty)
szFilter = " DAY(stock_data)= " + txtDay;
else
szFilter += " AND DAY(stock_data)= " + txtDay;
}
if (szFilter == String.Empty)
{
lblInfo.Text="不能全为空<BR>";
return;
}string szSql = "SELECT * FROM [table] WHERE " + szFilter;
不过呢,还要把txtDay改为txtDay.Text;^_^
非常感谢^_^
string szFilter = "";
SqlParameter param;if (txtYear.Text != "")
{
szFilter = " YEAR(stock_date)=@Year "
param=new SqlParameter("@Year", txtYear.Text);
param.DbType=DbType.Int32;
cmd.Parameters.Add(param);
}else {
//要求必须包含Year
lblInfo.Text="必须输入年份<BR>";
return;
}
if (txtMonth.Text != "")
{
szFilter += "AND MONTH(stock_date)=@Month"
param=new SqlParameter("@Month", txtMonth.Text);
param.DbType=DbType.Int32;
cmd.Parameters.Add(param);
}if (txtDay.Text != "")
{
szFilter += "AND DAY(stock_date)=@Day"
param=new SqlParameter("@Day", txtDay.Text);
param.DbType=DbType.Int32;
cmd.Parameters.Add(param);
}cmd.Connection=conn;
cmd.CommandText = "SELECT * FROM [table] WHERE " + szFilter;
conn.Open();
...