我有以下代码,它作为我的程序的一部分非常好用:
.CommandText = .CommandText & " and [Name] = ?"
然后我使用:
添加参数.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
这很好用,但我真的想在Name.Text中搜索包含值的所有内容。我搜索了几十篇文章,说你可以做到以下几点,但它总是会返回0结果,即使有确定的数据匹配:
.CommandText = .CommandText & " and [Name] like '%' + ? + '%'"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
我现在尝试了下面的建议,但记录集仍然返回0结果:
.CommandText = .CommandText & " and [Name] like ?"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, "%" + Name.Text + "%"))
我正在使用Microsoft Visual Studio 2015,使用ADODB在vb.net中编写连接到SQL Server 2014实例。
CodingGorilla的SQL跟踪建议显示以下SQL在运行时运行。我不知道为什么它不起作用了!
exec sp_executesql N'SELECT * FROM qFormsAndName Where [FormType] Like ''R1%'' and [Name] like @P1 ORDER BY [CurrentStatus], [DateReceived];',N'@P1 char(100)','%JONES%
请有人帮忙吗?
答案 0 :(得分:0)
我会尝试稍微改变一下:
<div class="row">
<div class="row__colspaced">
<?php
$row = 1;
if (($handle = fopen("http://api.ekomi.de/get_feedback.php?interface_id=66630&interface_pw=f2d097e83db1880e85e2f77aa&range=3m&type=csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
echo "<div class='colspan12-4 colspan6-3 as-grid with-gutters'><div class='content-module--review-list__item item' data-mh='review-item'>";
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
if($c == 0){
echo gmdate('Y-m-d H:i:s',$data[$c]);
}
else if($c == 2){
if($data[$c] == 1){
echo '<div class="fa-star-rating">
<i class="fa fa-star"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
</div>';
}
if($data[$c] == 2){
echo '<div class="fa-star-rating">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
</div>';
}
if($data[$c] == 3){
echo '<div class="fa-star-rating">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star-o"></i>
<i class="fa fa-star-o"></i>
</div>';
}
if($data[$c] == 4){
echo '<div class="fa-star-rating">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star-o"></i>
</div>';
}
if($data[$c] == 5){
echo '<div class="fa-star-rating">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>';
}
}
else {
echo '<div class="inner-item item'.$c.'">' . $data[$c] . "</div>";
}
}
echo "</div></div>";
}
fclose($handle);
}
?>
</div>
</div>
这应该有用,虽然它不能直接回答为什么你的代码版本不起作用。
答案 1 :(得分:0)
作为对原始问题的评论回答,但对于任何看到此问题的人,文本长度应该是参数文本的长度,因此: .Parameters.Append(SearchCom.CreateParameter(“@ Name”,ADODB.DataTypeEnum.adChar,ADODB.ParameterDirectionEnum.adParamInput,100,tbName.Text))
于: .Parameters.Append(SearchCom.CreateParameter(“@ Name”,ADODB.DataTypeEnum.adChar,ADODB.ParameterDirectionEnum.adParamInput,tbName.TextLength,tbName.Text))
或:
.Parameters.Append(SearchCom.CreateParameter(“@ Name”,ADODB.DataTypeEnum.adChar,ADODB.ParameterDirectionEnum.adParamInput,len(tbName.Text),tbName.Text))
答案 2 :(得分:0)
不是根据输入自定义参数定义,而是最好切换到更合适的varchar
数据类型,它指定一个可变长度字符串,而不是char
指定一个固定长度字符串:
.CommandText = .CommandText & " and [Name] like ?"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adVarChar, _
ADODB.ParameterDirectionEnum.adParamInput, 100, "%" + Name.Text + "%"))
(另外,如果你真的这样,正如你在问题中所说,使用VB.Net,VS 2015和SQL Server 2014,我认真地建议切换到使用ADO.Net而不是旧的ADO,可追溯到约2000年)