【发布时间】:2015-06-09 20:45:08
【问题描述】:
下面我有一段代码应该从我的数据库中写出列,但是当我尝试执行时,它给了我一个异常,说它无法读取没有值的列,但它是错误的,因为它应在我希望从中获取信息的列中包含日期。
这是表定义:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
PATRICK_DEV dbo FILE_DATE_PROCESSED BASE TABLE
代码如下:
try
{
SqlConnection connect = new SqlConnection("Server=OMADB01;Database=PATRICK_DEV;Trusted_Connection=True;");
connect.Open();
SqlCommand command = new SqlCommand("INSERT FILE_DATE_PROCESSED(UID, FILE_DATE_PROCESSED, FILE_NAME, DATE_ENTERED) SELECT newid(), '2015-12-31 19:32:45', 'myfilename.txt', getdate()", connect);
SqlDataReader reader = null;
reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["FILE_DATE_PROCESSED"].ToString());
Console.WriteLine(reader["DATE_ENTERED"].ToString());
}
connect.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
这就是我现在正在处理的:我有一个 SQL 数据库,看起来像这样:
UID FILE_DATE_PROCESSED FILE_NAME DATE_ENTERED
在这个数据库中,每次我添加一个文件时,第 2 列应该包含我上次输入文件的时间,第 4 列应该包含我现在输入文件的时间。这是我正在寻找的结果:
UID FILE_DATE_PROCESSED FILE_NAME DATE_ENTERED
random random date the file name the current date
number
如果有不同于我发布的解决此问题的方法,请告诉我,我将非常感激。
【问题讨论】:
-
您正在执行 INSERT 操作,没有可回读的内容
-
要获取表定义,请使用
SELECT * FROM information_schema.tables,这应该会为您提供表列表。如果您需要完整的独立查询来获取表定义,请参阅stackoverflow.com/questions/6215459/… -
@Steve 在 Insert 语句之后有一个 select 语句。不滚动就很难看清楚。
-
@Mark NO,SELECT 用于将成本值提供给 INSERT 语句。查询不返回它。如果您在 INSERT 上使用 ExecuteReader,则不会返回任何列名,因此会出现错误
-
@史蒂夫。呃,快点读吧,抱歉
标签: c# sql-server