我尝试将图像数据导入到sql server 2008 db中,代码如下:
INSERT INTO [TAB] (ID_PHOTO,PHOTO)
VALUES(
CAST('333EFB54-7062-E043-F088-FE0A916C0297' as uniqueidentifier),
CONVERT(varbinary(max),'0xFFD8FFE000')
)
字符串只是一个虚拟字符,但是当我插入数据时,我在数据库中找到了类似的内容
0x307846464438464645303030
这与我的预期完全不同。有人知道我做错了吗?
答案 0 :(得分:2)
此处的问题只是字符串 - constructor(private route: ActivatedRoute) {
console.log(this.route.snapshot.params);
console.log(this.route.snapshot.queryParams);
}
- 正在转换为'0xFFD8FFE000'
,因此每个字符 - 首先是VARBINARY
,然后是0
,那么x
,依此类推 - "转换"十六进制表示:
F
因此,Character -- Hex value
0 30
x 78
F 46
F 46
D 44
8 38
F 46
F 46
E 45
0 30
0 30
0 30
被视为一串字符,就像"这是一个测试"而不是一个字节序列。
幸运的是,修复非常简单:只需添加"样式" 0xFFD8FFE000
的可选第3个参数的1
值:
CONVERT
答案 1 :(得分:1)
你所看到的是正确的。您应该能够运行以下内容以查看它们的转换是否正确发生(基本上,将数据库中的varbinary值转换回VARCHAR):
SELECT CONVERT(varbinary(max),'0xFFD8FFE000')
SELECT CONVERT(varchar(100), 0x307846464438464645303030)
OR
SELECT CONVERT(varchar(100), CONVERT(varbinary(max),'0xFFD8FFE000'))
请注意varbinary值周围缺少单引号 - SQL Server中不需要
答案 2 :(得分:0)
我想用图片将数据插入sql DB,为此我已将sql中的数据类型设置为varbinary,但出现错误
System.Data.SqlClient.SqlException:'从数据隐式转换 不允许将varchar类型更改为varbinary(max)。
使用CONVERT函数运行此查询。” 考虑我的代码:
private void InsertButton_Click(object sender, EventArgs e)
{
string grno = GRNoTextBox.Text;
string rollno = RollNoTextBox.Text;
string name = NameTextBox.Text;
string fname = FatherNameTextBox.Text;
string cno = ContactNoTextBox.Text;
string clas = ClassComboBox.SelectedItem.ToString();
string sec = SectionComboBox.SelectedItem.ToString();
string picadd = ofg.FileName;
conn.Open();
string query = "insert into stdinfo values ('"+grno+ "','" + rollno + "','" + name + "','" + fname + "','" + clas + "','" + sec + "','" + cno + "','" + picadd + "')";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Student info inserted into database successfully");
}