c# - SQL 命令返回 null 作为值
问题描述
我以前只熟悉 Linq 之类的数据访问。我现在正在做一些事情,需要我在后端使用实际的 SQL 命令来返回单个值。我的代码编译并运行,但是它返回 null 的值,我知道除了空字符串之外应该返回一些东西......
我的结构在这上面吗?还是缺少其他东西?
下面是我的代码:
internal string GetSexDescription(string sex, int id_merchant)
{
string newSex = "";
var builder = new ConnectionStringHelper();
var connString = builder.getCasinoDBString(id_merchant);
using (SqlConnection conn = new SqlConnection(connString))
{
string sql = "SELECT Description FROM person_gender_lookup WHERE ID = @sex";
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
cmd.Parameters.Add("@Sex", SqlDbType.VarChar).Value = sex;
newSex = cmd.ExecuteScalar().ToString();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
return newSex;
}
}
这是表的结果集的图片:
解决方案
打开连接。
internal string GetSexDescription(string sex, int id_merchant)
{
string newSex = "";
var builder = new ConnectionStringHelper();
var connString = builder.getCasinoDBString(id_merchant);
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open(); //<- This line here.
string sql = "SELECT Description FROM person_gender_lookup WHERE ID = @sex";
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
cmd.Parameters.Add("@Sex", SqlDbType.VarChar).Value = sex;
newSex = cmd.ExecuteScalar().ToString();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
return newSex;
}
}
cmd.ExecuteScalar()
可能是InvalidOperationException
因为您尚未打开连接而引发的。异常被捕获,输出到控制台,然后newSex
从调用 throw 开始返回初始值ExecuteScalar
。
推荐阅读
- python - 将 HTML 表格转换为对象或字典列表
- c# - 返回时导致 SEGFAULT 的非托管函数指针
- wpf - 如何相对于一个中央控件定位控件?
- android - 有没有办法知道我在某个构建中拥有的每个 gradle 依赖项的版本?
- git - 使用 git add -p 时如何配置 git 以显示移动的行?
- oracle-data-integrator - 如何在 ODI 中的 2 个表之间进行多个联接?
- java - 捕获 ARCore ArSceneView 的位图
- java - 使用嵌套方法的方法引用运算符很热门?
- maven - Maven UnknownArchetype 异常
- multithreading - 在 pthread_cond_timedwait 和 pthread_mutex_lock 上崩溃